2013-05-08 33 views
0

我們目前的四個.aspx網站中有一個自定義的HttpModule,它可以執行Authorization(用戶可以看到什麼)。我已經將我們舊的.aspx網站重建爲MVC。因爲我們的客戶不會全部切換到MVC網站,所以我不能使用MVC的Action過濾器,但我需要繼續使用HttpModule。ASP.NET MVC3自定義HttpModule給出錯誤404

的問題是,我得到HTTP錯誤404

我做了什麼: - MVC應用程序部署斌正確(這是因爲沒有驗證在IIS中它工作正常配置的HTTP模塊); - 在Web.Config和IIS7.5中爲HttpModule制定了適當的配置(這已得到驗證,因爲我從HttpModule向文件寫入logentries以查看模塊是否首先被調用並按預期運行)

Web.config文件:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
      <add name="WebHIS_Authorization" type="WebHIS_Authorization.AuthorizationModule" /> 
     </modules> 
    </system.webServer> 

所以一切似乎很好地工作。根據日誌輸入HttpModule的BeginRequest。我甚至在我的日誌文件中證實,在HttpModule離開BeginRequest方法之前,URL仍然是預期的。但是,看起來好像MVC路由在HttpRequest離開HttpModule後不工作了,IIS返回404。我希望我能得到幫助。

如果您需要查看特定的東西,請提問並提供相應的信息。

回答

0

我不確定爲什麼呢。但是我們得到了上面的錯誤,因爲我們試圖處理HTTP請求生命週期的所有事件。我們增加了對事件的處理程序:

BeginRequest 
AuthenticateRequest 
AuthorizeRequest 
ResolveRequestCache 
AcquireRequestState 
PreRequestHandlerExecute 
PostRequestHandlerExecute 
ReleaseRequestState 
UpdateRequestCache 
EndRequest 

雖然我們只需要的BeginRequest(我們記錄的其他事件以備將來參考)。因此,我們刪除了所有其他事件的處理程序,並將處理程序留在BeginRequest上,並且我們再也沒有得到http錯誤。

對不起,我沒有關於此行爲發生的具體信息。我通過試用&錯誤發現了這一點。希望這個線程可以在未來幫助別人。