2011-11-08 56 views
2

在我的asp.net mvc 3應用程序中,我做了一些錯誤處理,我很高興它的工作。它在本地計算機上正常工作。但在託管iis或許用自己的錯誤頁面替換錯誤視圖。我想,我幾乎可以肯定這是因爲Response.TrySkipIisCustomErrors在asp.net mvc 3中的錯誤處理在主機上無法正常工作

但我把Response.TrySkipIisCustomErrors設置爲true;並沒有任何效果。

的web.config

<customErrors mode="Off"></customErrors> 

的Global.asax

void Application_Error(object sender, EventArgs e) 
{ 
    var exception = Server.GetLastError(); 
    Response.Clear(); 
    Server.ClearError(); 
    Response.StatusCode = (int)HttpStatusCode.InternalServerError; 
    Response.TrySkipIisCustomErrors = true; 

    var routeData = new RouteData(); 
    routeData.Values["controller"] = "Errors"; 
    routeData.Values["action"] = "ServerError"; 

    var httpException = exception as HttpException; 
    if (httpException != null) 
    { 
     Response.StatusCode = httpException.GetHttpCode(); 
     switch (Response.StatusCode) 
     { 
      case 403: 
      routeData.Values["action"] = "Unathorized"; 
         break; 
      case 404: 
      routeData.Values["action"] = "NotFound"; 
         break; 
       } 
     } 

IController errorsController = new ErrorsController(); 
var rc = new RequestContext(new HttpContextWrapper(Context), routeData); 
errorsController.Execute(rc); 
} 

如何改寫這個代碼來獲取IIS上託管手柄errros因爲我想要的。

+0

恕我直言,你不會得到很多答案,因爲這不是處理MVC錯誤的正確方法。在我轉換到正確的錯誤處理之前,我用類似的解決方案掙扎了很多,正如我在這裏所描述的:http://blog.gauffin.org/2011/11/how-to-handle-errors-in-asp-net -mvc/ – jgauffin

+1

檢查我的答案在這裏:http://stackoverflow.com/questions/6033681/how-to-override-httperrors-section-in-web-config-asp-net-mvc3/8403396#8403396 –

回答

1

嘗試從控制器基類派生,它將覆蓋OnException方法,並將所有錯誤處理代碼放在那裏。

相關問題