Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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中HTTP模块和HTTP处理程序之间的内部延迟_Asp.net_Http_Module_Delay_Handler - Fatal编程技术网

ASP.NET中HTTP模块和HTTP处理程序之间的内部延迟

ASP.NET中HTTP模块和HTTP处理程序之间的内部延迟,asp.net,http,module,delay,handler,Asp.net,Http,Module,Delay,Handler,我有一个标准的ASP.NET(Web表单)应用程序,运行在IIS8上,收到投诉,有时网站处理请求需要花费太多时间 经过深入调查和日志记录,我发现延迟发生在我最后一个HTTP模块中的PreRequestHandlerExecute事件结束之后和HTTP处理程序中的ProcessRequest事件之前 据我所知,我没有任何代码介于两者之间,管道的这一部分完全由IIS和ASP.NET framework管理。 我还看到,当发生延迟时,处理线程ID的模块和处理程序会发生变化 我已经阅读了大量文档,但还没

我有一个标准的ASP.NET(Web表单)应用程序,运行在IIS8上,收到投诉,有时网站处理请求需要花费太多时间

经过深入调查和日志记录,我发现延迟发生在我最后一个HTTP模块中的PreRequestHandlerExecute事件结束之后和HTTP处理程序中的ProcessRequest事件之前

据我所知,我没有任何代码介于两者之间,管道的这一部分完全由IIS和ASP.NET framework管理。 我还看到,当发生延迟时,处理线程ID的模块和处理程序会发生变化

我已经阅读了大量文档,但还没有接近解决方案:(

这些延误的原因是什么


提前感谢

您的网站并不慢:它正在等待

ASP.NET只允许每个会话ID执行一个线程。如果用户打开两个选项卡并尝试提交两个具有相同会话ID的web请求,则第二个线程将阻塞,直到第一个线程完成

请参阅此问题进行讨论,并查看一些不同的解决方案:

最简单的答案是…如果处理程序只需要对会话变量进行读取访问,则实现而不是
iRequesteSessionState
。这将允许处理程序至少与自身并发执行


您可以使用的,最近发布的。它应该可以工作。如果可以,请务必回答。

您的处理程序实现了吗?延迟可能是由于阻塞/锁定会话数据造成的。John,谢谢您的回答。我的处理程序确实实现并使用了会话。这些锁有什么解决方案吗?我添加了一个答案来解决这些锁,但听起来很简单好像这不是你的问题。你试过看这是否有帮助吗?也许部分加载时间与自动首次编译有关。谢谢你的回答,但不幸的是,事实并非如此:(.我知道“每个浏览器一次会话”限制,但我看到的延迟并不是指第一个请求阻止的第二个请求,而是指IIS.BTW中任何位置的第一个请求得到延迟,在服务器端调查此问题时,我注意到了一些附加点。首先,在服务器上,我看到处理请求的线程的ID在延迟后发生更改。我尝试启用F请求跟踪日志有问题,但由于某些原因,我得到的日志不完整。在请求摘要中,我看到一些请求需要40秒才能处理,但日志仅显示详细日志,直到延迟开始(常规\u读取\u实体\u启动日志条目)。然后日志中断…:((