HttpWebRequest - 区分客户端和服务器异常

时间:2012-07-09 09:23:22

标签: .net windows-phone-7 httpwebrequest

假设处理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枚举成员,因此这解释了它......不知道为什么它不受支持。

1 个答案:

答案 0 :(得分:0)

您可以检查Status的{​​{1}}字段。这将有助于在较高级别告诉您错误发生的位置。您可以找到它的文档here以及一段非常简单的示例代码here