繁体   English   中英

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

[英]Internal delay between HTTP Module and HTTP Handler in ASP.NET

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

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

据我所知,我之间没有任何代码,这部分管道完全由 IIS 和 ASP.NET 框架管理。 我还看到 Module 和 Handler 处理线程 ID 在发生延迟时会发生变化。

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

这些延迟的原因是什么?

提前致谢

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

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

请参阅此问题以进行讨论和一些不同的解决方案: 我刚刚发现为什么所有 asp.net 网站都很慢

最简单的答案是...如果处理程序只需要对会话变量的读取访问权限,请实现IReadOnlySessionState而不是IRequireSessionState 这将允许处理程序至少与其自身同时执行。

你可以使用微软最近发布的全新异步会话状态模块 它应该工作。 如果是这样,请务必回答这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM