0

我需要一个全局异常过滤器来处理异常并将自定义结果/消息返回给响应。在客户端,我有一个全局 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);
    }
});
4

1 回答 1

2

您需要设置filterContext.ExceptionHandled = true;(或Server.ClearError();

于 2013-06-25T15:01:03.197 回答