MVC異常處理(異常捕獲)
阿新 • • 發佈:2017-11-27
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異常處理(異常捕獲)