2009-07-14 27 views
1

我正在IIS7下運行帶有自定義模塊的ASP.NET應用程序。IIS7在模塊中的AuthenticateRequest狀態中掛起WindowsAuthentication

直到兩天前,一切都運行良好。現在我注意到這些請求開始在AuthenticateRequest狀態和WindowsAuthentication模塊中掛起。我的自定義模塊在BeginRequest狀態下截獲並處理請求,並使用HttpContext.Current.ApplicationInstance.CompleteRequest()完成請求處理。它不處理的請求留給IIS,讓他們通過其他模塊進行處理。

問題(請求掛起)發生在我的自定義模塊不處理的頁面中。

任何想法,我應該開始解決這個問題?我今天一直在三種不同的機器上重現這個問題。我還發現我們在上個月沒有更改我們的web.config文件。

任何幫助解決這個問題非常感謝。

由於提前,查爾斯 普拉卡什Dasari

回答

0

最後我找到了解決我的問題。

自定義模塊,我已經實現了使用異步處理程序:

 context.AddOnBeginRequestAsync(
      new BeginEventHandler(BeginBeginRequest), 
      new EndEventHandler(EndBeginRequest) 
     ); 

在我的模塊不處理請求的情況下,開始事件處理程序完成的要求,並已什麼也沒有做。直到幾天前,我跳到另一個線程來處理Begin方法中的這些請求,最近我修復了這種方法,只有當我的模塊必須處理請求時才跳到另一個線程。現在這已經導致了這個問題。顯然IIS不喜歡我在同一個線程中完成我的處理。

所以現在我又跳到另一個線程 - 不管是什麼。 IIS很高興,我的應用程序不再掛了。

我仍然需要進一步調查並確定發生這種情況的原因 - 或者它確實是IIS中的錯誤,或者是我從BeginBeginRequest方法返回IAsyncResult的方式。但現在我知道我必須在不同的線程上處理這個請求。