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

  • 相关阅读:
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    C博客作业05-指针
    C语言——数组博客作业
    c语言博客3—函数
    循环结构博客
    c语言博客,顺序与分支结构
    Java面向对象课程设计——购物车
  • 原文地址:https://www.cnblogs.com/lidingwen/p/2882139.html
Copyright © 2011-2022 走看看