據this blog post,我可以在我的ApiController錯誤響應,提供給客戶的有用信息,如:如何使用/解析ASP.NET WebApi返回的錯誤?
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 HttpError是衆所周知的類型,你是後。一些更多的信息在這裏http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx –
這是在同一條鏈路在我的問題! :-) –
對我來說,問題在於HttpError在System.Net.Http中,這對我的客戶端項目是不可用的......我只是用相關成員創建了它的副本。 –