asp.net mvc重寫404,500錯誤
阿新 • • 發佈:2019-02-12
在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需自己加上即可。