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 страниц, которые он перенаправляет. к.



Как мне это сделать?

508   2  

2 ответов:

Вам нужно будет отключить автоматическое перенаправление после:

req.AllowAutoRedirect = false;

Установите значение AllowAutoRedirect в true, если вы хотите, чтобы запрос автоматически следовал за заголовками перенаправления HTTP в новое расположение ресурса.

Если значение AllowAutoRedirect равно false, все ответы с кодом состояния HTTP от 300 до 399 возвращаются приложению.

Можно также задать максимальное число перенаправлений, за которыми следует свойство MaximumAutomaticRedirections.

Используйте это, чтобы остановить автоматическое перенаправление myHttpWebRequest.AllowAutoRedirect=false;

Comments

    Ничего не найдено.