2011-02-17 87 views
6

我有一些跟踪时间戳记的ASP.Net IIS应用程序,获取大量的流量。我在Application.BeginRequest的结尾处有跟踪语句,在Global.asax中有Application_PreRequestHandlerExecute的开始。偶尔在BeginRequest结束和PreRequestHandlerExecute开始之间有一个很大的延迟,即超过5秒。在IIS7中,Application_BeginRequest和Application_PreRequestHandlerExecute之间会发生什么?

什么是一个HttpRequest的生命周期这两个方法调用,可能是这么长时间之间怎么回事?这是IIS7在Windows Server 2008上

感谢。

回答

6

如果的BeginRequest已经happend和延迟的PreRequestHandlerExecute之前,你可能要记录的线程ID。如果它不同,你会受到ASP.NET线程敏捷性的困扰。

一个原因指日可使用会话。 ASP.NET在HttpContext.Current.Session上使用读写器锁。如果您写入此变量,则具有相同会话的所有其他请求都不能同时运行并停放在队列中。 .NET使用轮询机制来检查会话锁是否被释放。

我也建议checken你已经建立在发行和system.web/compilation/@debug =“假”

+0

是啊,这是会话锁定。谢谢。 – nganju 2011-03-18 12:50:21

相关问题