c# HttpWebRequest -如何确定是否HTTP 301发生

本文关键字:是否 HTTP 301发生 何确定 HttpWebRequest | 更新日期: 2023-09-27 18:04:24

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

我用下面的代码创建了一个测试页面:
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# HttpWebRequest -如何确定是否HTTP 301发生

您需要在以下情况下关闭自动重定向:

req.AllowAutoRedirect = false;

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

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

还可以通过MaximumAutomaticRedirections属性设置重定向的最大跟随数。

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