zoukankan      html  css  js  c++  java
  • Asp.net MVC增加全局异常捕获500、404错误

    在Global.asax文件中

    可以看到系统异常处理的捕获:

            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
            }

    我们需要重写这个捕获方法

    1、重写HandleErrorAttribute

        /// <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
    更改系统注册方法:

            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new AppHandleErrorAttribute());
            }

    以上方法就完成了对500错误异常的捕获。

    若还需要捕获404错误,则可以使用web.config文件来设置,因为404可以无需记录详细消息。

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

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

  • 相关阅读:
    hdu 1568 Fibonacci
    hdu 1286 找新朋友
    mysql错误之2014
    mysql查看语句执行状态的常见函数
    mysql里制造一个错误
    css对html中表格单元格td文本过长的处理
    写js时常见错误
    DOM中的节点属性
    button的默认type居然是submit
    ubuntu手贱改了sudoers权限之后的恢复
  • 原文地址:https://www.cnblogs.com/lidingwen/p/2882139.html
Copyright © 2011-2022 走看看