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

Adi*_*jaj 1 c# webexception

我可以从HttpWebRequest和HttpWebResponse获取Http状态代码( 200,301,404 等)中的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;
}
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*kov 5

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

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

样品:

var request =  (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "HEAD";
request.AllowAutoRedirect = false;
Run Code Online (Sandbox Code Playgroud)