1. 程式人生 > >asp.net mvc重寫404,500錯誤

asp.net mvc重寫404,500錯誤

在Global.asax檔案中

可以看到系統異常處理的捕獲:

1 2 3 4 public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }


我們需要重寫這個捕獲方法

1、重寫HandleErrorAttribute

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /// <summary>
/// 錯誤日誌(Controller發生異常時會執行這裡) /// </summary> public class AppHandleErrorAttribute : HandleErrorAttribute { /// <summary> /// 異常 /// </summary> /// <param name="filterContext"></param> public override void OnException(ExceptionContext filterContext) { //使用log4net或其他記錄錯誤訊息
Exception Error = filterContext.Exception; string Message = Error.Message;//錯誤資訊 string Url = HttpContext.Current.Request.RawUrl;//錯誤發生地址 filterContext.ExceptionHandled = true; filterContext.Result = new RedirectResult("/SiteStatus/HtmlError500/?q=" + Message);//跳轉至錯誤提示頁面 } }

2、使用重寫後的HandleAttribute
更改系統註冊方法:

1 2 3 4 public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new AppHandleErrorAttribute()); }


以上方法就完成了對500錯誤異常的捕獲。

若還需要捕獲404錯誤,則可以使用web.config檔案來設定,因為404可以無需記錄詳細訊息。

1 2 3 <customErrors mode="On" > <error statusCode="404" redirect="~/SiteStatus/HtmlError404?404"/> </customErrors>


相應的Controller和View需自己加上即可。