我在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錯誤頁面。然而,錯誤被正確記錄。
我在做什麼錯?謝謝。
檢查以確保Web配置文件中的CustomErrors部分沒有被頂起。 –
我應該爲這種情況啓用還是禁用自定義錯誤? –