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

  • 相关阅读:
    单词统计
    意见汇总
    项目评审结果
    注册表键值
    C++ 创建快捷方式
    XPosed 示例
    直播流程
    C++隐藏任务栏图标
    C++ 屏幕录制
    DUILIB UI创建过程
  • 原文地址:https://www.cnblogs.com/lidingwen/p/2882139.html
Copyright © 2011-2022 走看看