Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Web API并发问题:静态Web方法迁移到按请求Web API控制器_Asp.net_Asp.net Web Api_Autofac_Iis 8 - Fatal编程技术网

Asp.net Web API并发问题:静态Web方法迁移到按请求Web API控制器

Asp.net Web API并发问题:静态Web方法迁移到按请求Web API控制器,asp.net,asp.net-web-api,autofac,iis-8,Asp.net,Asp.net Web Api,Autofac,Iis 8,应用程序:在页面上声明了静态web方法的Asp.net迁移到Asp.net web表单,其中静态web方法转换为web API 2控制器,并使用JWT令牌进行保护。目前,web API控制器实例化由AutoFac完成 builder.RegisterType<Controller>().As<IController>().InstancePerRequest(); builder.RegisterType().As().InstancePerRequest(); 调

应用程序:在页面上声明了静态web方法的Asp.net迁移到Asp.net web表单,其中静态web方法转换为web API 2控制器,并使用JWT令牌进行保护。目前,web API控制器实例化由AutoFac完成

 builder.RegisterType<Controller>().As<IController>().InstancePerRequest();
builder.RegisterType().As().InstancePerRequest();
调用代码:使用异步AJAX的Javascript

问题:每当在一秒钟内对同一web API进行3-4次以上的调用时,请求就会在IIS队列中被触发,需要几分钟的时间来缓解。这给最终用户带来了重大问题。以下是从IIS日志中提取的数据

分析:我很难相信Autofac每秒无法创建多个控制器实例。WebAPI是一个非常成熟的框架,对象实例化的开销非常小。在早期的实现中,静态webmethods与所有人共享,因此没有实例化开销,但是使用WebAPI时存在控制器实例化开销,根据我的说法,AutoFac无法在一秒钟内完成实例。我可以将InstancePerRequest更改为应用范围,但考虑到问题正在生产中发生,这将是有风险的

是否有人遇到过这样的问题,以及我从这方面的丰富经验中得到的任何帮助。这也是正确的分析方向吗?

我计划做一个DebugDiag挂起分析来确认这一点


在将责任归咎于Autofac之前。。控制器构造函数中有什么?你的控制器在做什么?如果您在一个最小的WebAPI项目上运行分析,您会得到相同的“Autofac”结果吗?另外,Autofac不应该为您注册控制器吗?
IController
是一个自定义界面还是
System.Web.Mvc.IController
?ControllerConstructor非常精简。IController是一个自定义接口。我将尝试在一个最小的WebAPI项目上运行相同的程序。在确定导致挂起的原因之前,您确实需要获得一些实际的探查器数据。