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

C# 如何使用/分析ASP.NET WebApi返回的错误?,c#,json,asp.net-web-api,C#,Json,Asp.net Web Api,根据,我可以在我的ApicController中创建一个错误响应,为客户端提供有用的信息,如下所示: throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, String.Format("Contact {0} not found.", id))); 。。。客户端将收到一个“对象”,其中包含错误详细信息以及(在本例中)404状态: { "Message": "Co

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

    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>"
}
{
“消息”:“未找到联系人22。”,
“MessageDetail”:”
}
(我不认为
MessageDetail
在本例中是合适的,因此可能不会包括在内,但在其他情况下可能会包括在内——请参阅博客文章)

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

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

如果对象的类型是众所周知的,那么我可以只使用
JsonConvert.DeserializeObject()
,但我认为没有预定义的类型,如果我创建自己的类,我该如何处理可选的
MessageDetail
成员


我对处理JSON不是很熟悉,所以这对于那些正在处理JSON的人来说可能是显而易见的——在这种情况下,所有的建议都会被感激地接受。

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

+1 HttpError是您所追求的已知类型。这里的更多信息与我的问题中的链接相同!:-)我的问题是HttpError在System.Net.Http中,这对我的客户端项目不可用。。。我刚刚与相关成员创建了一份副本。