2011-02-17 89 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

相關問題