2011-12-03 23 views
4

我在Global.asax.cs中使用以下代碼以記錄未處理的錯誤並將用戶轉移到其中一個錯誤頁面。錯誤頁面被實現爲標準的MVC控制器/視圖。ASP.NET MVC IIS7.5:錯誤處理在將網站從W7移動到Windows 2008 R2後停止正常工作

 protected void Application_Error(Object sender, EventArgs e) 
    { 
     Exception ex = HttpContext.Current.Server.GetLastError(); 

     //Handle errors 

     var httpException = ex as HttpException; 
     Response.Clear(); 
     Server.ClearError(); 
     var routeData = new RouteData(); 
     routeData.Values["controller"] = "Errors"; 
     routeData.Values["action"] = "Index"; 
     routeData.Values["exception"] = ex; 
     Response.StatusCode = 500; 
     if (httpException != null) 
     { 
      Response.StatusCode = httpException.GetHttpCode(); 
      switch (Response.StatusCode) 
      { 
       case 403: 
        routeData.Values["action"] = "Http403"; 
        break; 
       case 404: 
        routeData.Values["action"] = "Http404"; 
        log.Error("Error 404 - User sees page not found page", ex); 
        break; 
      } 
     } 
     log.Fatal("USER SEES ERROR 500 PAGE", ex); 
     IController errorsController = new errorsController(); 
     var rc = new RequestContext(new HttpContextWrapper(Context), routeData); 
     errorsController.Execute(rc); 
    } 

它在開發機器(Windows 7 Pro)上運行良好。但是,當我將該網站移至Windows Server 2008 R2時,錯誤頁面停止顯示。相反,我看到標準的IIS錯誤頁面。然而,錯誤被正確記錄。

我在做什麼錯?謝謝。

+0

檢查以確保Web配置文件中的CustomErrors部分沒有被頂起。 –

+0

我應該爲這種情況啓用還是禁用自定義錯誤? –

回答

1

確保您已從Global.asax中刪除HandleErrorAttribute全局屬性註冊。或者,如果您正在使用ASP.NET MVC 2,請從您的控制器中刪除[HandleError]屬性。也請嘗試設置errorMode以詳細說明:

<system.webServer> 
    <httpErrors errorMode="Detailed" /> 
</system.webServer> 
+0

我刪除了它,但這種行爲似乎沒有改變。 –

+0

@AlexAvrutin,請嘗試在web.config中設置「」。 –

+0

謝謝,它幫助!這條線改變了什麼? –

相關問題