2011-08-23 79 views
0

我有一個ASP.NET MVC 2頁面。在錯誤或異常期間,Global.asax中的Application_Error方法不會在IIS7上觸發。Global.asax Application_Error未在IIS上觸發

**但它確實火,如果我跑從VS2010的Web應用程序(本地主機:someport)

我的代碼(C#):

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception exception = Server.GetLastError(); 
    string requestedUrl = HttpContext.Current.Request.Url.ToString(); 

    Response.Clear(); 
    // do something 
    Server.ClearError(); 
    Server.Redirect("Error"); 
} 

我的配置:

<customErrors mode="On" defaultRedirect="~/Error"> 
</customErrors> 

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 

請幫忙。

回答

4

這是因爲您的網絡配置設置正在覆蓋默認行爲。您需要禁用此選項(customErrors =「Off」並刪除defaultRedirect(或者有條件地設置允許未設置的錯誤落入Application_Error事件的正確狀態代碼)。如果禁用此選項,則可以處理Application_Error中的錯誤事件然後重定向用戶或顯示來自這個事件的消息這個web配置設置是處理錯誤,只有未處理的錯誤會冒泡到這個事件

1

還有一件事
Application_Error沒有被解僱,在IIS上標記爲HandleError屬性的類/方法中引發
如果您在asp.net開發服務器上運行您的應用程序,但它不適用於真正的IIS,則會觸發此問題(我陷入了這個陷阱)

相關問題