在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需自己加上即可。