1

我正在尝试从 httphandler 到 javascript 前端捕获异常。问题是 xhr responsetext 包含完整的 html。

我没有找到任何有效的方法来提取实际的错误信息

有任何想法吗?

4

2 回答 2

0

好吧,这取决于您实际需要什么。如果您需要将当前错误消息发送到 UI,那么您可以这样做:

 public class ClientErrorHandler : FilterAttribute, IExceptionFilter
 {
    public void OnException(ExceptionContext filterContext)
    {   
       if (filterContext.HttpContext.Request.IsAjaxRequest()) 
       {         
           var response = filterContext.RequestContext.HttpContext.Response;
           response.Write(filterContext.Exception.Message);
           response.ContentType = MediaTypeNames.Text.Plain;
           filterContext.ExceptionHandled = true;
        }
    }
 }

您可以在需要的地方添加此属性(甚至可以是基本控制器或作为全局过滤器),它会检查传入的请求是否来自 javascript,如果是,则仅写入响应错误消息。

如果您不需要实际消息,您可以简单地检查返回请求的状态码:

$.ajax({
  statusCode: {
    500: function(xhr) {
      if(window.console) console.log(xhr.responseText);
    }
  }
});
于 2013-06-11T06:04:41.410 回答
0

找到了答案

在后端。将 Response.StatusCode 设置为 500 并使用 Response.Write 编写您的异常消息

于 2013-06-28T19:22:15.837 回答