我有一个标准的ASP.NET (Web )应用程序运行在IIS8上,并接收投诉,有时它会花费太多的时间来处理请求。
在深入研究和记录之后,我发现在我的上一个HTTP模块中的PreRequestHandlerExecute事件结束之后,以及在我的HTTP处理程序中的ProcessRequest事件之前,无论什么地方都会发生延迟。
据我所知,在中间没有任何代码,管道的这一部分绝对是由IIS和ASP.NET框架管理的。我还看到模块和Handler处理线程ID在发生延迟时会发生变化。
我读了大量的文档,但并没有更接近于决议:
这些延误的原因是什么?
提前感谢
发布于 2017-02-20 16:30:09
您的站点并不慢,它正在等待。
ASP.NET只允许每个会话ID执行一个线程。如果用户打开两个选项卡,并尝试提交两个具有相同会话ID的web请求,则第二个线程将阻塞,直到第一个线程完成为止。
有关讨论和几个不同的解决方案,请参见这个问题:我刚发现为什么所有的asp.net网站都很慢。
最简单的答案是..。如果处理程序只需要对会话变量的读访问,则实现IReadOnlySessionState而不是IRequireSessionState。这将允许处理程序至少与自身并发执行。
您可以使用最近发布的微软全新的异步会话状态模块。应该管用的。如果是的话,一定要回答这个问题。
https://stackoverflow.com/questions/42211547
复制相似问题