首页 文章

状态代码301在C#中无法正确显示

提问于
浏览
1

我可以在Getting Http Status code number (200, 301, 404, etc.) from HttpWebRequest and HttpWebResponse中按照dtb的建议获得枚举数字 . 但是,对于移动永久站点,我也得到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;
}

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

1 回答

  • 5

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

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

    样品:

    var request =  (HttpWebRequest)HttpWebRequest.Create(url);
    request.Method = "HEAD";
    request.AllowAutoRedirect = false;
    

相关问题