假設的處理HTTP網頁響應異常的常規方式:HttpWebRequest的 - 區分客戶端和服務器異常
void BeginGetResponseCallback(IAsyncResult asyncResult)
{
try
{
var req = asyncResult.AsyncState as HttpWebRequest;
using (HttpWebResponse response = req.EndGetResponse(asyncResult) as HttpWebResponse)
{
...
}
}
catch (WebException we)
{
...
}
}
這裏的問題是,用相同的錯誤代碼引發WebException(「未找到」)可如果摔出要麼服務器存在連接問題,要麼服務器實際以「未找到」狀態回覆。這在HttpWebRequest的實現中似乎是一個錯誤。
我們應該如何正確區分這種情況,即拋出的異常「源於」客戶端還是服務器?
編輯1:我在Windows Phone 7.1平臺上運行此代碼。
Edit2:建議的WebException的Status屬性在WP7上實際上是無用的,因爲它始終設置爲UnknownError,即使它應該是ProtocolError。 WP7上可能的HttpWebRequest實現錯誤?
Edit3:Silverlight中WebException.Status的MSDN文檔頁面聲明不支持ProtocolError枚舉成員,所以這解釋了它......不知道爲什麼它不受支持。
您可能想查看您返回的異常的[狀態成員](http://msdn.microsoft.com/en-us/library/system.net.webexception.status.aspx) - [one (http://msdn.microsoft.com/zh-cn/library/system.net.webexceptionstatus.aspx)將幫助您確定發生錯誤的位置。 – 2012-07-09 09:27:21