C# 收单机构equestState vs PreExecuteRequestHandler

C# 收单机构equestState vs PreExecuteRequestHandler,c#,newrelic,request-pipeline,C#,Newrelic,Request Pipeline,在AcquisiteRequestState中,我们收到了相当多的ajax调用,花费了大量时间。在旅行中,我们偶然发现ASP.Net中的会话锁定gem,因此我们实现了一个自定义会话状态处理程序(基于下面的链接) 在进行更改并部署之后,我们看到AcquisiteRequestState急剧下降,但它已被PreExecuteRequestHandler取代 今天早上,我突然意识到我们已经把OWIN包括在内了,这可能是前置任务处理者占用这么多时间的原因。然后我继续删除它,当我部署代码时,PreExec

在AcquisiteRequestState中,我们收到了相当多的ajax调用,花费了大量时间。在旅行中,我们偶然发现ASP.Net中的会话锁定gem,因此我们实现了一个自定义会话状态处理程序(基于下面的链接)

在进行更改并部署之后,我们看到AcquisiteRequestState急剧下降,但它已被PreExecuteRequestHandler取代

今天早上,我突然意识到我们已经把OWIN包括在内了,这可能是前置任务处理者占用这么多时间的原因。然后我继续删除它,当我部署代码时,PreExecuteRequestHandler从列表中消失了。可悲的是,它现在又以几乎相同的成本被收购者EquiestState所取代

对于返回部分视图的AJAX调用,我们似乎受到了相当大的打击,尽管吞吐量较高,返回基本类型或JSON对象的AJAX调用似乎基本上没有受到影响

这就给我留下了三个问题,我完全被难住了,我想一个问题的答案会引导我们找到另两个问题的答案

1) 安装OWIN时,为什么成本从AcquisiteRequestState转移到PreExecuteEventHandler?OWIN上的某些内容是否标记为IRequireSessionState? (据我所知,AcquisiteRequestState本应在托管管道中更早出现)

2) 我们如何获得更多关于该州内部实际情况的信息?还是将时间花在返回JSON对象并使用它在UI上呈现所需内容上更好

3) 在NewRelic中,我们确实看到了几个映射到/{controller}/{action}/{id}的请求(尽管很少),然后在上面提到的请求期间被完全卡住。尽管在我们的路由上设置了限制,使其仅路由到项目中的控制器和操作,但仍然存在这种情况

附言: 这似乎与以下内容非常相似,我们在New Relic中也看到了这一点:

自定义会话模块来自:

对于试图排除我们最终遇到的会话问题,但仍然需要依赖会话值(因此您不能仅在控制器级别禁用会话)的任何人,请查看以下sessionstate提供程序:

请特别注意以下应用程序设置:


您需要升级到.Net Framework 4.6.2,但在我们的情况下,这是一个很小的代价。

这已经是为.Net Framework 4.6.2及更高版本创建的“空白网站”的默认会话状态提供程序了吗?不幸的是,不是。你仍然需要改变这个。如果您在IIS中托管,如果遇到此问题,您应该能够看到卡在AcquisiteRequestState中的请求。(我不确定是否有可用的4.8模板将此作为默认设置)