2014-03-13 34 views
1

当访问无服务器运行的无效IP地址时,Microsoft System.Net.Browser.ClientHttpWebRequest似乎会抛出一个状态码为NotFound的WebException,它对应于服务器的404响应。正确的响应不是HTTP状态码,绝对不在400范围内,因为客户端库从来没有机会与有效的HTTP服务器通话。这对我的代码来说是有问题的,因为404在我的服务器端点返回时有特殊含义。为什么System.Net.Browser.ClientHttpWebRequest在访问无效的服务器地址时返回404?

有什么方法可以确定404(NotFound)响应实际上是由服务器返回还是被错误地用于描述System.Net.Browser.ClientHttpWebRequest类的一般连接失败?

请注意,这种行为发生在WP8上。

+0

我一直能够在我的一个应用程序中用'HttpClient'处理这个特定情况,通过检查伴随错误发生的原因词组(如果它是空的,那么它可能是一个连接问题)。我不知道是否可以用'HttpWebRequest'做同样的事情。 –

+0

您的互联网服务提供商会这样做。其DNS服务器将您重定向到他们自己的垃圾页面。在你的网络浏览器中试试'http:// 1.1.1.1'来查看相同的页面。找一个更好的ISP或将DNS地址改为8.8.8.8 –

回答

1

我有同样的问题和捕System.Net.WebException和插入catch语句内的代码下面的行,使我得到服务器返回的实际响应:

catch(System.Net.WebException we) 
{ 
    using (var streamResponse = we.Response.GetResponseStream()) 
    { 
     using (var streamRead = new StreamReader(streamResponse)) 
     { 
     string responseString = streamRead.ReadToEnd(); 

     // do something with responseString 
     } 
    } 
} 
} 
相关问题