1. 程式人生 > >MVC異常處理(異常捕獲)

MVC異常處理(異常捕獲)

src err 捕獲 uestc 技術 filters customer request sta

1.cshtml頁面異常

技術分享圖片

2.Controller異常

技術分享圖片

3.路由參數異常。

4.頁面不存在404

頁面不存在404,可以通過配置config來處理

    <customErrors mode="On">
      <error statusCode="404" redirect="~/Error/Page404" />
    </customErrors>

其它的異常都可以通過HandleErrorAttribute攔截處理

    public class ErrorFilter : HandleErrorAttribute
    {
        
public override void OnException(ExceptionContext filterContext) { string errorMsg; var exception = filterContext.Exception; errorMsg = exception.Message; if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) {
var accept = filterContext.RequestContext.HttpContext.Request.AcceptTypes; if (accept.Contains("application/json")) { filterContext.Result = new JsonResult() { Data = new { Success = false, Msg = errorMsg } }; }
else { filterContext.Result = new JavaScriptResult() { Script = "alert( ‘" + errorMsg + "‘);" }; } } else { //普通異常 filterContext.Result = new ViewResult() { ViewName = "/Views/Test/ErrorMsg.cshtml",ViewData = new ViewDataDictionary() { { "msg", errorMsg } } }; } filterContext.ExceptionHandled = true; } }

註冊全局過濾器

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new ErrorFilter());
        }
    }

MVC異常處理(異常捕獲)