小编Mar*_*ter的帖子

AcquireRequestState vs PreExecuteRequestHandler

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

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

今天早上我突然意识到我们已经包含了OWIN,这可能是PreExecuteRequestHandler占用这么多时间的原因.然后我继续删除它,当我部署代码时,PreExecuteRequestHandler从列表中消失.可悲的是,现在它已经以相同的成本再次被AcquireRequestState取代.

我们似乎在AJAX调用上非常努力地返回部分视图,AJAX调用返回原始类型或JSON对象似乎在很大程度上不受影响,尽管吞吐量更高.

所以这给我留下了3个问题,我绝对难以理解,我认为一个问题的答案会引导我们找到另外两个问题的答案.

1)为什么在安装OWIN时,成本从AcquireRequestState移动到PreExecuteEventHandler?OWIN上的东西标记为IRequireSessionState吗?(据我所知,AcquireRequestState应该在托管管道的早期发生)

2)我们如何获得有关AcquireRequestState内部实际内容的更多信息?或者我们花时间更好地返回JSON对象并使用它来呈现我们在UI上所需的内容?

3)我们确实看到一些请求(很少但是)在New Relic中映射到/ {controller}/{action}/{id},然后在上面提到的请求期间完全停留.尽管我们的路由设置限制只能路由到我们在项目中的控制器和操作.

PS:这看起来与以下内容非常相似,我们也在New Relic中看到了这一点:AcquireRequestState中的长时间延迟

自定义会话模块来自: 我刚刚发现为什么所有ASP.Net网站都很慢,我正在尝试解决该怎么做

c# request-pipeline newrelic

12
推荐指数
1
解决办法
2239
查看次数

标签 统计

c# ×1

newrelic ×1

request-pipeline ×1