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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM