在Javascript中从Web-api读取自定义错误

时间:2014-02-08 11:20:15

标签: javascript asp.net-web-api

我希望能够从我的(自托管)web-api返回自定义错误。

我在服务器配置中设置了以下标志...

HttpSelfHostConfiguration config = new HttpSelfHostConfiguration(baseAddress);      
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;      

在服务器端Controller中,我有类似下面的内容

public HttpResponseMessage Post(MyDatadata)
{
  // do stuff and received an error back..

  HttpError error = new HttpError("test test");
  error.Add("mycode", "abcd");
  error.Add("mymdetails", "my detailed message");

   return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, error);
}

然而,在我的Javacript做帖子时,我无法解决任何这些错误。

我会有

$.ajax({
        type: 'POST',
        url: 'postUri',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(data)
    })
        .fail(function(jqXhr, textStatus, errorThrown) {

           var ttt = JSON.parse(jqXhr.responseText).message;

           if (jqXhr.getResponseHeader('Content-Type').indexOf('application/json') > -1)    {
               // only parse the response if you know it is JSON
               var error = $.parseJSON(jqXhr.responseText);
               alert(error.Message);
           } else {
               alert('Fatal error');
           }
       });

但是jqXhr.responseText总是一个空字符串,我看不到传递给.error的数据中的其他任何地方的字符串

当我在fiddler(原始视图)中查看响应时,我确实看到了这些字符串..

HTTP/1.1 500 Internal Server Error
Content-Length: 91
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Sun, 09 Feb 2014 01:20:31 GMT

{
"message": "test test",
"mycode": "abcd",
"mymdetails": "my detailed message"
}

但我只是看不到如何从Javascript中获取这些内容

有人知道这里有什么问题吗?

提前感谢您提供任何信息!

1 个答案:

答案 0 :(得分:0)

我将回答这个问题,再看一下(使用$ .post的新示例),数据确实在jqXhr.responseText中(正如其他帖子所示)

也许以前在服务器端出现了问题,我没有做正确的事情(我创建了一个新的示例服务器来玩web-api 2)