我需要一个全局异常过滤器来处理异常并将自定义结果/消息返回给响应。在客户端,我有一个全局 ajax 错误函数,可以处理每个 ajax 调用中的所有错误。
问题是当我的应用程序某处抛出错误时,全局异常过滤器被调用,我尝试创建一些自定义响应,但之后,当页面呈现时,在客户端响应为空(警报输出响应) .
重要的是我尝试使用 Global.asax "Application_Error" 事件并且响应有效。这是为什么?什么让我的反应更容易?我怎样才能让它工作?
全局异常过滤器(客户端响应文本为空):
public class ExceptionAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
//I need to clear response so that I don't have yellow screen of death
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.HttpContext.Response.Write("OnException - Response");
//this doesn't work too
filterContext.Result = new JsonResult { Data = "OnException - JSON" };
//doesn't help
filterContext.HttpContext.Server.ClearError();
}
}
Global.asax 错误处理程序(响应显示在客户端):
protected override void Application_Error(object sender, EventArgs e)
{
Response.Clear();
Response.Write("Application_Error Test");
}
客户端全局 ajax 处理程序:
$(document).ajaxError(function (event, xhr, settings, exception) {
event.stopPropagation();
if (xhr != null) {
alert(xhr.responseText);
}
});