al manejar errores 404 en ASP.NET ¿está bien establecer errores 404 para redirigir a una página que envía el código de respuesta 404 al navegador o se debe usar server.transfer para que el ¿Se puede enviar el encabezado 404 al navegador mientras la URL sigue siendo la misma?404 página response.redirect vs server.transfer
Respuesta
customErrors statusCode = "404" da como resultado una redirección temporal 302 y luego una 404 (si ha configurado eso en el código de la página 404).
Por lo tanto, el siguiente debe hacerlo para usted en su Global.asax o error HttpModule:
protected void Application_Error(Object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
if (exception is HttpUnhandledException)
{
if (exception.InnerException == null)
{
Server.Transfer(ERROR_PAGE_LOCATION, false);
return;
}
exception = exception.InnerException;
}
if (exception is HttpException)
{
if (((HttpException)exception).GetHttpCode() == 404)
{
Server.ClearError();
Server.Transfer(NOT_FOUND_PAGE_LOCATION);
return;
}
}
if (Context != null && Context.IsCustomErrorEnabled)
Server.Transfer(ERROR_PAGE_LOCATION, false);
else
Log.Error("Unhandled exception trapped in Global.asax", exception);
}
Editar: Ah, y Best way to implement a 404 in ASP.NET me puso en el camino hacia la Server.ClearError imperativo();
Ver http://www.andornot.com/blog/post/Handling-404-errors-with-ASPNET.aspx para una publicación que hice que cubre todo esto.
Usaría la sección de los customerrors de la web.config, luego puede especificar la página a la que quiere ir 404.
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="Error.aspx">
<error statusCode="404" redirect="404Error.aspx" />
</customErrors>
</system.web>
</configuration>
En la página de recepción si desea seguir enviando el 404 se puede colocar esto en el evento Page_Load:
Response.Status = "404 Not Found";
Aún hace una redirección de 302 temp. – Ted
Mi consejo es dejar que el proceso de ASP.NET hacer el trabajo por usted basado en su web.config, pero si realmente desea hacerlo en el código, debe seguir con Server.Transfer porque le ahorrará una devolución de datos.
Response.Redirect hará 302 primero que 404 en la página redirigida. Server.Transfer conservará la URL, por lo que es 404 en la página solicitada.
Creo que todo se reduce SEO. Sugiero usar Server.Transfer ya que es más claro para el navegador/motor de búsqueda que no se encuentra la URL solicitada. Si usa Response.Redirect, la página solicitada se redirige 'temporalmente' a una página no encontrada. Eso no es bueno ... 302 no es una buena idea.
- 1. Server.Transfer vs. Response.Redirect
- 2. Server.Transfer() vs. Server.Execute()
- 3. Server.transfer cambiando la URL por segunda vez
- 4. ¿Cómo devolver 'propio' página personalizada 404?
- 5. CodeIgniter página 404
- 6. RoutingError Página 404
- 7. Server.Transfer a un HttpHandler
- 8. Cómo evitar "Response.Redirect no se puede llamar en una devolución de llamada de página"
- 9. Response.WriteFile & Response.Redirect
- 10. ¿Cómo creo una página 404?
- 11. ¿Redirigir a la página 404 o mostrar el mensaje 404?
- 12. Response.Redirect usando ~ Path
- 13. ¿Por qué existe la diferencia entre Response.Redirect vs new RedirectResult()?
- 14. Error básico de Rails 404 Página
- 15. Nginx - Personalización de la página 404
- 16. 404 Redirección personalizada
- 17. ¿Response.Redirect (Request.Url.AbsolutePath) es siempre "seguro"?
- 18. asp.net Después de un Server.Transfer, ¿cómo obtiene la ruta de acceso de la página actual?
- 19. ASP.NET Response.Redirect() Error
- 20. ¿Por qué Response.Redirect a veces extrae de la memoria caché?
- 21. Cómo comprobar que la página se redirige de la página anterior o no en asp.net
- 22. ¿Cómo puedo redirigir un error 404 en una página 404 personalizada usando Codeigniter?
- 23. ASP.NET - ¿Cómo utilizar Response.Redirect() desde dentro de Control de usuario? (.ascx)
- 24. ¿Cuál es el equivalente Response.Redirect en Silverlight?
- 25. En ASP.NET MVC, ¿cómo funciona response.redirect?
- 26. ¿Cuál es la alternativa a Response.Redirect() asp.net?
- 27. Response.Redirect() en iFrame, ventana principal de redirección
- 28. Ejecutando código para una página personalizada de Django 404
- 29. Cómo mostrar la página predeterminada 404 de Apache en PHP
- 30. Posible lanzar un error 404 dentro de una página ASP.Net?
Tengo curiosidad por ver su blog pero, irónicamente, la página no se encuentra. ;) – Korijn
¡Oh, la ironía! Enlace fijo – Ted