0

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

4

1 回答 1

0

You can inspect the Status field of the WebException. That will help tell you, at a high level, where the error occurred. You can find the docs for it here and a very simple piece of sample code here.

于 2012-07-09T09:28:36.397 回答