我需要能够将http 302重定向与使用.net远程处理的代码区分开来。
为了连接到相应的网址,我们按顺序尝试,直到有人工作。在大多数环境中,第一个url正确地失败,并且System.Net.WebException状态为 WebExceptionStatus.NameResolutionFailure。 对于使用OpenDNS的客户,然而这将作为HTTP 302响应重新定向到其“指南”页面。因为我正在使用.net远程处理,重定向被忽略,我收到的错误是一个System.Runtime.Serialization.SerializationException,它只能通过消息“在解析完成之前遇到流的结束”来区分。
这是opendns http响应: 找到HTTP / 1.0 302 地点:http://guide.opendns.com/?url=demonstration.totallyinvalidexceptonmynetwork.com%2Fi%2Fdo%2Fnot%2Fexist.html 内容类型:text / html 内容长度:0 连接:关闭 日期:2009年5月28日星期四,格林尼治标准时间20:46:26 服务器:OpenDNS指南
答案 0 :(得分:0)
我假设要发布您使用HttpWebRequest
对象的请求。然后你可以在HttpWebResponse
对象中收到响应,如下图所示。
然后,您可以检查response.StatusCode
属性。如果它是302,那么执行你的逻辑。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode = HttpStatusCode.Found)
{
//your code here
}
更新:如果您使用的是System.Net.Webclient
,那么您可以使用它可以使用其ResponseHeaders
属性。 Here就是如何使用它。