Web API Concurrancy问题:静态Web方法迁移到Per Request web api控制器

时间:2017-07-22 20:16:23

标签: 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();

调用代码:使用异步AJAX的Javascript

问题:每当在一秒钟内对同一个Web API进行超过3-4次调用时,会在IIS队列中触发请求,并且需要几分钟才能轻松完成。这会给最终用户带来重大问题。以下是从IIS日志中提取的数据。

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

有人遇到过这样的问题以及我可以从SO上存在的丰富经验中获得的任何帮助。这也是分析的正确方向吗?

我计划完成DebugDiag挂起分析以确认这一点。

enter image description here

0 个答案:

没有答案