首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何区分由于连接性差而返回的NotFound与服务器和NotFound?

如何区分由于连接性差而返回的NotFound与服务器和NotFound?
EN

Stack Overflow用户
提问于 2012-10-18 09:39:17
回答 2查看 438关注 0票数 5

在Windows上,我可以获得WebExceptionStatusCode == HttpStatusCode.NotFound,如果

  1. 服务器返回404
  2. 由于连接性不好,无法找到服务器。

在Windows上,对于这两种情况,WebException的状态都是WebExceptionStatus.UnknownError

我如何区分1病例和案例2

我观察到的是,当连接不好(没有找到服务器)时,ResponseUri为null,而WebResponse的标头包含0项。

编辑

ResponseUri不是空的,而是它的OriginalString为空。

这样做安全吗?

代码语言:javascript
运行
复制
catch (WebException ex)
{
    switch (ex.Response.StatusCode)
    {
        ...
        case HttpStatusCode.NotFound:
            if (ex.Response.ResponseUri == null
                || string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
                DoServerNotFound();
            else
                DoServerReturned404();
EN

回答 2

Stack Overflow用户

发布于 2012-11-02 02:13:57

在进行网络呼叫之前,为什么不使用NetworkInterface.GetIsNetworkAvailable()来查看是否有活动的网络连接。否则,你就会白白等待,浪费一个电话。如果存在连接,而调用仍然失败,您就知道这是web服务的一个问题。

我在我的应用程序中使用这个,如果没有连接,我就不用打电话了。

谢谢

最大值

票数 0
EN

Stack Overflow用户

发布于 2013-12-12 13:53:31

如果你得到了“找不到”的例外,因为床上的请求,这将有所帮助。

代码语言:javascript
运行
复制
  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();

                      }
              }
          }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12951610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档