MVC 01 filterError(异常)
1 mvc 异常 一部分在applicatuon_error中处理,另一部分在HandleErrorAttribute中处理,HandleErrorAttribute‘可以处理以下异常

HandleErrorAttribute:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace filter.Filters
{
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (!filterContext.ExceptionHandled) // 异常是否已经被处理.如果未被处理
{
if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) // 如果是ajax请求
{
filterContext.Result = new JsonResult()
{
Data = new { code = -1, message = filterContext.Exception.Message },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
else//其他
{
//返回一个view
filterContext.Result = new ViewResult()
{
ViewName = "~/views/shared/Error.cshtml",// 视图路径
ViewData = new ViewDataDictionary<string>(filterContext.Exception.Message),
};
}
filterContext.ExceptionHandled = true;// 异常已经被处理
}
//base.OnException(filterContext);
}
}
}
全局注册:
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { // filters.Add(new HandleErrorAttribute()); filters.Add(new CustomHandleErrorAttribute()); //全局注册自定义的error,不用每个action都打标签 }
Application_Error:
protected void Application_Error() { var exception = Server.GetLastError();// 获取最后一个Error Response.Write(exception.Message); var url = Request.Url.AbsoluteUri; Response.Write(HttpContext.Current.Error.Message); // 获取异常信息 Response.Redirect("~/Home/about");// 指定新的url地址 Server.ClearError(); }

浙公网安备 33010602011771号