parametros classic asp c# asp.net http redirect asp-classic

c# - classic - Código de estado HTTP Response.Redirect



response.redirect c# parametros (5)

¿Por qué ASP / ASP.NET Response.Redirect usa un código de estado HTTP-302 ("Movido temporalmente") aunque en la mayoría de los casos sería más apropiado un código de estado HTTP-301 ("Movido permanentemente")?


Además de la respuesta de Heinzi, la única entidad en la web que probablemente prestará mucha atención al 301 serían los motores de búsqueda. La mayoría de los navegadores no rastrearán y registrarán 301 para redirigir automáticamente cualquier solicitud posterior de la URL inicial. Los navegadores tratan 301 de forma idéntica a cómo tratan a 302. Por lo tanto, 302 en contenido dinámico como el generado en ASP.NET es bastante apropiado.


El error que está recibiendo no se debe a response.redirect!

El código de estado de respuesta HTTP 301 Movido permanentemente se utiliza para la redirección permanente, lo que significa que los enlaces o registros actuales que utilizan la URL para la que se recibió la respuesta 301 Moved Permanently deben actualizarse a la nueva URL proporcionada en el campo Ubicación de la respuesta.


He utilizado esta redirección permanente a mano con éxito:

public void RedirectPermanent(string newPath) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Status = "301 Moved Permanently"; HttpContext.Current.Response.AddHeader("Location", newPath); HttpContext.Current.Response.End(); }


Se supone que las respuestas con el estado 301 son almacenables en caché, y no creo que desee ese comportamiento para la mayoría de los redireccionamientos ASP / ASP.NET.

ASP.NET 4.0 tiene el método RedirectPermanent para eso si es necesario.


Un caso de uso común de Response.Redirect es mover al usuario a otra página en el código del lado del servidor después de una devolución de datos, por ejemplo, algo a lo largo de las líneas de

private void MyButton_Click(object sender, EventArgs e) { if (some condition) { Response.Redirect("ShowProduct.aspx"); } else { Response.Redirect("SorryOutOfStock.aspx"); } }

En esos casos, 301 estaría completamente equivocado. De hecho, creo que el caso anterior (mover de forma condicional al usuario a otra página después de cierta interacción de UI) es un uso mucho más común de Response.Redirect que un escenario real this-page-moved-to-another-URL-forever ( donde un código de retorno de 301 sería apropiado).