在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需自己加上即可。
本文详细介绍了如何在ASP.NET应用中改进系统异常处理逻辑,包括重写自定义错误处理属性和配置自定义错误页面,以实现更细致的错误日志记录、错误页面跳转和404错误的简化处理。通过实例展示了如何通过`Global.asax`文件和`web.config`文件完成这些功能的实现。
4830

被折叠的 条评论
为什么被折叠?



