如何在javascript上捕获.net httphandler的异常?

时间:2013-06-11 06:00:19

标签: c# javascript .net httphandler

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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);
    }
  }
});

答案 1 :(得分:0)

找到答案

在后端。将Response.StatusCode设置为500 并使用Response.Write

编写您的异常消息