asp.net - 在 IIS7 中,Application_BeginRequest 和 Application_PreRequestHandlerExecute 之间会发生什么?

标签 asp.net iis

我在获得大量流量的 ASP.Net IIS 应用程序上有一些带有时间戳的跟踪语句。我在 Global.asax 中的 Application_BeginRequest 末尾和 Application_PreRequestHandlerExecute 开头有跟踪语句。有时,BeginRequest 结束和 PreRequestHandlerExecute 开始之间会有很大的延迟,即超过 5 秒。

这两个方法调用之间的 HttpRequest 生命周期中发生了什么,可能需要这么长时间?这是 Windows Server 2008 上的 IIS7。

谢谢。

最佳答案

如果 BeginRequest 已经发生并且延迟发生在 PreRequestHandlerExecute 之前,您可能需要记录线程 ID。如果不同,您就会受到 ASP.NET 线程敏捷性的影响。

发生这种情况的一个原因可能是 session 的使用。 ASP.NET 在 HttpContext.Current.Session 上使用读写锁。如果写入此变量,同一 session 的所有其他请求将无法同时运行并被停放在队列中。 .NET使用轮询机制来检查 session 锁是否被释放。

我还建议检查您是否已在 Release 上进行构建以及 system.web/compilation/@debug = 'false'

关于asp.net - 在 IIS7 中,Application_BeginRequest 和 Application_PreRequestHandlerExecute 之间会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5034376/

相关文章:

asp.net - GridView 寻呼机样式问题

c# - 这个加密的 QueryString 有什么问题 - Base-64 字符数组的长度无效

javascript - 如何在 JQuery 中解析集合

ASP.NET部署

amazon-web-services - 通过 AWS Elastic Beanstalk 向 Windows Server 配置添加功能

html - ASP.NET TABLE + 在一个可滚动的 DIV 中,+ 表格单元格位置 :Relative : ModalPopupExtender

javascript - select2 的 tabindex 问题

iis - 将 IIS/Tomcat Web 应用程序转换为多服务器环境

python - IIS : django. core.exceptions.AppRegistryNotReady 上的 Django:应用程序尚未加载

wcf - WCF 服务如何监听与 IIS 相同的端口?