public class EwHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (ICTConfiguration.Debug)
{
base.OnException(filterContext);
return;
}
if (filterContext.ExceptionHandled)
{
return;
}
if (filterContext.HttpContext.Response.IsRequestBeingRedirected)
{
return;
}
var httpCode =
new HttpException(
null, filterContext.Exception).GetHttpCode();
if (!
ExceptionType.IsInstanceOfType(filterContext.Exception))
{
return;
}
if (
new HttpException(
null, filterContext.Exception).GetHttpCode() !=
500)
{
return;
}
ExceptionHelper.LogException(filterContext.Exception, HttpContext.Current);
bool isAjaxCall =
string.Equals(
"XMLHttpRequest", filterContext.HttpContext.Request.Headers[
"x-requested-with"],
StringComparison.OrdinalIgnoreCase);
if (isAjaxCall)
{
string message =
filterContext.Exception.Message;
if (filterContext.Exception
is HttpRequestValidationException)
{
message =
"包含非法字符";
}
filterContext.Result =
new JsonResult()
{
JsonRequestBehavior =
JsonRequestBehavior.AllowGet,
Data =
new
{
succeed =
false,
ret =
httpCode,
msg =
message
}
};
}
else
{
var controllerName = (
string)filterContext.RouteData.Values[
"controller"];
var actionName = (
string)filterContext.RouteData.Values[
"action"];
var model =
new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
filterContext.Result =
new ViewResult()
{
ViewName =
View,
MasterName =
Master,
ViewData =
new ViewDataDictionary(model),
TempData =
filterContext.Controller.TempData
};
filterContext.HttpContext.Response.Redirect("/500.html");
}
filterContext.ExceptionHandled =
true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.TrySkipIisCustomErrors =
true;
filterContext.HttpContext.Server.ClearError();
}
}
global注册过滤器
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new JoinEnterpriseAttribute(),
1);
filters.Add(new EwHandleErrorAttribute(),
2);
}
转载于:https://www.cnblogs.com/kingCpp/p/4646150.html
相关资源:DirectX修复工具V4.0增强版