C#检测页面重定向

我正在尝试确定http://www.accreditedqualifications.org.uk上是否存在以下forms的资格:

http://www.accreditedqualifications.org.uk/qualification/50084811.seo.aspx

50084811是最终用户输入的资格目标。

如果他们输入无效的例如

http://www.accreditedqualifications.org.uk/qualification/50084911.seo.aspx

它们被重定向到错误页面(据我所知,错误的http标题)。 有没有办法检测C#中的重定向。 我希望能够检测到http标头中的重定向(认为它将发出2)或类似的反对必须下载整个页面。 这可能会发生很多,所以我想尽量减少流量。

编辑

使用它来查看标题看起来像是为无效页面发出两个:

http://pageheaders.com/display-http-headers.php?url=http%3A%2F%2Fwww.accreditedqualifications.org.uk%2Fqualification%2F50084911.seo.aspx&agent=ie6

最简单的方法可能是在将AllowAutoRedirect设置为false的HttpWebRequest中使用HEAD请求(将Method设置为“HEAD”)来获取内容。 我不记得是否会导致exception,但无论哪种方式都应该很容易处理。

可以返回许多不同的代码。 您可以检查各种代码a la:

 response.StatusCode == HttpStatusCode.Redirect 

您可以在http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode.aspx上查看所有可能性。

或者,您可能会发现检查响应中的位置是否不同就足够了。

 var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "HEAD"; request.AllowAutoRedirect = false; string location; using (var response = request.GetResponse() as HttpWebResponse) { location = response.GetResponseHeader("Location"); } return (location != uri.OriginalString); 

您只能使用服务器中的webclient执行此操作。 如果您将链接提供给您的客户,则您之后不会参与他与认可的qualificationsweb服务器之间的通信,并且在您无法获得链接已被重定向到错误的信息之前。

至于我能理解你的项目,我会使用Webclient(或其他任何东西)从我的服务器进行一些调用,以确保资格存在并将结果存储在缓冲时间的数据库中。 尽管如此,它仍然不会拨打太多电话并获得可靠的信息。