假设的处理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