2011-08-03 20 views
7

Estoy haciendo algunas pruebas de mis redireccionamientos HTTP 301 (movidos permanentemente) para una aplicación web ASP.NET MVC.C# HttpWebRequest - ¿Cómo se determina si se realizó HTTP 301?

He creado una página de prueba con el siguiente código:

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(); 
} 

Pero el problema es, el código de estado HTTP es 200 (OK), ya que está leyendo la última respuesta (por ejemplo, la página se puso redirigido a).

La URL llegará a mi controlador de redirección, que devuelve esto:

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

Y eso es lo que quiero capturar, no el 200 de la página que se le redirecciona a.

¿Cómo lo hago?

Respuesta

1

Conjunto AllowAutoRedirect a true si desea que la solicitud de seguir automáticamente los encabezados de redirección HTTP a la nueva ubicación del recurso.

Si AllowAutoRedirect se establece en falso, todas las respuestas con un código de estado HTTP de 300 a 399 se devuelven a la aplicación.

también se puede establecer el número máximo de redirecciones a seguir por la propiedad MaximumAutomaticRedirections.

uso de este para detener la redirección automática myHttpWebRequest.AllowAutoRedirect=false;

Cuestiones relacionadas