4
我想了解一些關於HttpWebRequest的異常處理。HttpWebRequest WebException ProtocolError
我有一個客戶端庫,它正在向WebAPI控制器發出請求;我知道請求會拋出一個異常,並且包含消息「實體已經存在 - 1234」。
當我得到迴應;
using (HttpWebResponse response = (HttpWebResponse)r.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
return reader.ReadToEnd();
return "Invalid";
}
我得到一個拋出的WebException。所以,請求的調用者有一個try..catch。我得到了WebException。我得到的是一個協議錯誤,而不是所引發的500內部服務器錯誤(使用正確的狀態代碼來表示消息晚些時候發生)。現在,如果我閱讀WebException的Response,它確實包含我的消息和堆棧跟蹤。
問題
- 爲什麼我不能在我的迴應得到的500狀態碼,爲什麼它拋出一個協議錯誤?
- 是否有更正確的方式來處理請求?
我搜查了一下,發現有些人在沒有使用正確的標題等時出現此問題。但據我所知,我已經添加了所有標題,我可以仍然得到相同的行爲。
500是* HTTP協議*中指定的錯誤代碼;例外意味着「我使用的協議發出了錯誤信號」。 500本身將位於webexception響應狀態碼屬性中。 – 2014-09-26 15:35:30
那麼,通過拉動webexception響應來處理這個問題的正確方法呢?還是在我返回異常的方式中出現錯誤?我不習慣像這樣處理異常,我通常能夠處理狀態碼並從那裏開始。 – Hammerstein 2014-09-26 18:18:00