如何区分由于连接不良而从服务器和NotFound返回的NotFound?

时间:2012-10-18 09:39:18

标签: c# windows-phone-7

在Windows Phone上,如果

,我可以WebException获得StatusCode == HttpStatusCode.NotFound
  1. 服务器返回404
  2. 由于连接不良而无法找到服务器。
  3. 在Windows Phone WebException上,两种情况的状态均为WebExceptionStatus.UnknownError

    如何从案例1中判断案例2

    我观察到的是连接错误(未找到服务器)ResponseUri为空且WebResponse的标头包含0个项目。

    修改
    ResponseUri不是null,而是OriginalString为空

    这样做是否安全:

    catch (WebException ex)
    {
        switch (ex.Response.StatusCode)
        {
            ...
            case HttpStatusCode.NotFound:
                if (ex.Response.ResponseUri == null
                    || string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
                    DoServerNotFound();
                else
                    DoServerReturned404();
    

2 个答案:

答案 0 :(得分:0)

在进行网络通话之前,为什么不使用NetworkInterface.GetIsNetworkAvailable()查看是否存在活动的网络连接。否则,你最终会等待什么并浪费一个电话。如果存在连接且呼叫仍然失败,则表示这是Web服务的问题。

我在我的应用程序中使用它,如果没有连接,我不打扰打电话。

由于
最大

答案 1 :(得分:0)

如果你有'未找到'的例外情况请求帮助。

  catch (WebException ex)
       {                     
         using (WebResponse webResponse = ex.Response)
              {
                HttpWebResponse httpResponse = (HttpWebResponse)webResponse;
                using (Stream data = webResponse.GetResponseStream())
                using (var reader = new StreamReader(data))
                    {
                      string string = reader.ReadToEnd();

                      }
              }
          }