C# HttpWebRequest-как определить, произошел ли HTTP 301?
Я провожу некоторое тестирование моих HTTP 301 редиректов (перемещенных постоянно) для ASP.NET веб-приложение MVC.
Я создал тестовую страницу со следующим кодом:
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 страниц, которые он перенаправляет. к.
Как мне это сделать?
2 ответов:
Вам нужно будет отключить автоматическое перенаправление после:
req.AllowAutoRedirect = false;
Установите значение
AllowAutoRedirectв true, если вы хотите, чтобы запрос автоматически следовал за заголовками перенаправления HTTP в новое расположение ресурса.Если значение
AllowAutoRedirectравно false, все ответы с кодом состояния HTTP от 300 до 399 возвращаются приложению.Можно также задать максимальное число перенаправлений, за которыми следует свойство
MaximumAutomaticRedirections.Используйте это, чтобы остановить автоматическое перенаправление
myHttpWebRequest.AllowAutoRedirect=false;
Comments