ASP.NET中HTTP模块和HTTP处理程序之间的内部延迟
我有一个标准的ASP.NET(Web表单)应用程序,运行在IIS8上,收到投诉,有时网站处理请求需要花费太多时间 经过深入调查和日志记录,我发现延迟发生在我最后一个HTTP模块中的PreRequestHandlerExecute事件结束之后和HTTP处理程序中的ProcessRequest事件之前 据我所知,我没有任何代码介于两者之间,管道的这一部分完全由IIS和ASP.NET framework管理。 我还看到,当发生延迟时,处理线程ID的模块和处理程序会发生变化 我已经阅读了大量文档,但还没有接近解决方案:( 这些延误的原因是什么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只允许每个会话ID执行一个线程。如果用户打开两个选项卡并尝试提交两个具有相同会话ID的web请求,则第二个线程将阻塞,直到第一个线程完成 请参阅此问题进行讨论,并查看一些不同的解决方案: 最简单的答案是…如果处理程序只需要对会话变量进行读取访问,则实现而不是
iRequesteSessionState
。这将允许处理程序至少与自身并发执行
您可以使用的,最近发布的。它应该可以工作。如果可以,请务必回答。您的处理程序实现了吗?延迟可能是由于阻塞/锁定会话数据造成的。John,谢谢您的回答。我的处理程序确实实现并使用了会话。这些锁有什么解决方案吗?我添加了一个答案来解决这些锁,但听起来很简单好像这不是你的问题。你试过看这是否有帮助吗?也许部分加载时间与自动首次编译有关。谢谢你的回答,但不幸的是,事实并非如此:(.我知道“每个浏览器一次会话”限制,但我看到的延迟并不是指第一个请求阻止的第二个请求,而是指IIS.BTW中任何位置的第一个请求得到延迟,在服务器端调查此问题时,我注意到了一些附加点。首先,在服务器上,我看到处理请求的线程的ID在延迟后发生更改。我尝试启用F请求跟踪日志有问题,但由于某些原因,我得到的日志不完整。在请求摘要中,我看到一些请求需要40秒才能处理,但日志仅显示详细日志,直到延迟开始(常规\u读取\u实体\u启动日志条目)。然后日志中断…:((