【问题标题】:C# HttpWebRequest - How to determine if HTTP 301 Occured?C# HttpWebRequest - 如何确定是否发生了 HTTP 301?
【发布时间】:2011-10-18 17:30:04
【问题描述】:

我正在为 ASP.NET MVC Web 应用程序测试我的 HTTP 301 重定向(永久移动)。

我使用以下代码创建了一个测试页面:

try
{
    var req = (HttpWebRequest) WebRequest.Create(url);
    resp = (HttpWebResponse) req.GetResponse();
    return Json(new {statusCode = (int) resp.StatusCode});  
}
catch (Exception exc)
{
    return Json(new { statusCode = (int)HttpStatusCode.InternalServerError });
}
finally
{
    if (resp != null) resp.Close();
}

但问题是,状态码是 HTTP 200(OK),因为它正在读取最后一个响应(例如它被重定向到的页面)。

URL 将访问我的重定向控制器,它会返回:

return RedirectToRoutePermanent("SomeRoute", new { id = someId });

这就是我想要捕获的,而不是它被重定向到的页面的 200。

我该怎么做?

【问题讨论】:

    标签: c# asp.net asp.net-mvc httpwebrequest http-status-code-301


    【解决方案1】:

    你需要关闭automatic redirection following:

    req.AllowAutoRedirect = false;
    

    【讨论】:

      【解决方案2】:

      如果您希望请求自动跟随 HTTP 重定向标头到资源的新位置,请将 AllowAutoRedirect 设置为 true。

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

      您还可以通过MaximumAutomaticRedirections 属性设置最大重定向次数。

      使用它来停止自动重定向 myHttpWebRequest.AllowAutoRedirect=false;

      【讨论】:

        猜你喜欢
        • 2012-06-16
        • 1970-01-01
        • 2011-01-15
        • 2011-04-27
        • 2010-10-31
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        相关资源
        最近更新 更多