假设处理http Web响应异常的常规方法:
void BeginGetResponseCallback(IAsyncResult asyncResult)
{
try
{
var req = asyncResult.AsyncState as HttpWebRequest;
using (HttpWebResponse response = req.EndGetResponse(asyncResult) as HttpWebResponse)
{
...
}
}
catch (WebException we)
{
...
}
}
此处的问题是,如果服务器存在连接问题或服务器实际回复“未找到”状态,则可能会抛出具有相同错误代码(“未找到”)的WebException。这似乎是HttpWebRequest实现中的错误。
我们应该如何恰当地区分这种情况,即是否在客户端或服务器上“抛出”异常?
Edit1:我在Windows Phone 7.1平台上运行此代码。
Edit2:建议的WebException的Status属性在WP7上几乎没用,因为它总是设置为UnknownError,即使它应该是ProtocolError。 WP7上可能的HttpWebRequest实现错误?
Edit3:Silverlight中WebException.Status的MSDN文档页面声明不支持ProtocolError枚举成员,因此这解释了它......不知道为什么它不受支持。