我在获得大量流量的 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/