如何使用/解析ASP.NET WebApi返回的错误?

时间:2012-09-24 23:32:41

标签: c# json asp.net-web-api

根据this blog post,我可以在我的ApiController中创建一个错误响应,为客户端提供有用的信息,如下所示:

    throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, String.Format("Contact {0} not found.", id)));

...并且客户端将收到一个“对象”,其中包含错误详细信息以及(在此示例中)404状态:

{
     "Message": "Contact 22 not found.",
     "MessageDetail": "<other info - not always present>"
}

(我不认为MessageDetail在这个例子中是合适的,因此可能不会被包括在内,但在其他情况下可能会 - 包括博客文章)。

听起来不错,但我的C#客户端应用程序应该如何在客户端使用?我提出了一个请求,我期待一个JSON编码的Contact对象作为响应,但我得到了一个不同类型的对象。

因为响应代码指示失败,所以我想我知道不期望Contact对象,而是查找此错误对象。但是考虑到并非每个错误都会返回其中一个,并且假设MessageDetail成员可能存在或不存在,我该如何解析响应呢? (注意:在我的场景中,它将是JSON编码的,我在客户端使用JSON.NET。)

如果对象是一个众所周知的类型,那么我可以使用JsonConvert.DeserializeObject<T>(),但我认为没有预定义的类型,如果我创建自己的类,我该怎么办?可选的MessageDetail成员?

我对处理JSON不太熟悉,所以对于那些人来说这可能是显而易见的 - 在这种情况下,感谢所有建议。

1 个答案:

答案 0 :(得分:2)

HttpError可从客户端反序列化。您可以使用它来读取错误响应中的数据。