2013-09-25 115 views
0

我撥打電話到Web API服務是這樣的:HttpClient的PostAsync到的WebAPI - 返回500,但沒有拋出異常)

var response = client.PostAsync("http://localhost:8080/api/values", new FormUrlEncodedContent(new[] {new KeyValuePair<string, string>("a", "b"),})) 
        .Result; 

結果是

「500內部服務器錯誤」

沒有異常被拋出(即使我已經設置VS到休息的時候CLR拋出異常)

我有什麼辦法可以強制VS喚起潛在的異常嗎?

+0

即使在託管代碼運行之前,錯誤可能來自管道中的較早部分。事件查看器中是否有任何內容?如果沒有,您可能需要通過像Fiddler這樣的代理路由您的流量,有時會有錯誤的詳細信息。 – argaz

回答

0

沒有基本的例外,這就是爲什麼你不能泡它。然而,如果你想創建一個你可以打電話

response.EnsureSuccessStatusCode(); 

如果響應代碼是4xx或5xx那麼它會拋出。

+0

我知道我可以用response.EnsureSuccessStatusCode拋出一個異常,但我試圖找出是什麼導致500錯誤在第一個地方...我的處理程序中沒有我的斷點擊中等... – Alex

+0

@Alex Ahhhh,你想知道服務器端的錯誤!你可以做的一件事是安裝ASP.NET跟蹤。另一個有助於獲得響應消息的技巧是訪問響應消息並調用response.Content.LoadIntoBufferAsync()。Wait()當你仍然可以捕獲它引發的任何錯誤時,這將導致序列化更早完成。 –

+0

我會推薦elmah,而不是簡單的安裝,並帶有非常好的UI –