1

我可以按照 dtb 在Getting Http Status code number (200, 301, 404, etc.) from HttpWebRequest 和 HttpWebResponse中的建议获取带有枚举的数字。但是,对于永久移动的站点,我也得到 200(OK)。我想看到的是301。请帮忙。我的代码如下。什么可能是错误的/需要纠正的?

 public int GetHeaders(string url)
{
    //HttpStatusCode result = default(HttpStatusCode);
    int result = 0;
    var request = HttpWebRequest.Create(url);
    request.Method = "HEAD";
    try
    {
        using (var response = request.GetResponse() as HttpWebResponse)
        {
            if (response != null)
            {
                result = (int)response.StatusCode; // response.StatusCode;
                response.Close();
            }
        }
    }
    catch (WebException we)
    {
        if (we.Response != null)
        {
            result = (int)((HttpWebResponse)we.Response).StatusCode;
        }

    }

    return result;
}

我使用此代码的工具能够显示 404,而不是现有域,但它忽略重定向并显示有关重定向 url 的详细信息。例如,如果我将旧域easytipsandtricks.com 放在文本字段中,它会显示tipscow.com 的结果(如果您在任何在线检查工具中检查easytipsandtricks.com,您会注意到它给出了正确的重定向消息 - 301 Moved )。请帮忙。

4

1 回答 1

4

您需要将HttpWebRequest.AllowAutoRedirect设置为false(默认为true),以使其不会自动跟随重定向(30x 响应)。

如果 AllowAutoRedirect 设置为 false,则所有带有从 300 到 399 的 HTTP 状态代码的响应都将返回给应用程序。

样本:

var request =  (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "HEAD";
request.AllowAutoRedirect = false;
于 2013-06-18T18:58:57.903 回答