我正在为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页。
我该怎么做?
答案 0 :(得分:13)
您需要关闭automatic redirection following:
req.AllowAutoRedirect = false;
答案 1 :(得分:1)
如果您希望请求自动将HTTP重定向标头跟踪到资源的新位置,请将AllowAutoRedirect
设置为true。
如果AllowAutoRedirect
设置为false,则所有HTTP状态代码为300到399的响应都将返回给应用程序。
您还可以设置MaximumAutomaticRedirections
属性所遵循的最大重定向数。
使用它来停止自动重定向
myHttpWebRequest.AllowAutoRedirect=false;