Controlador de errores 404 Http en Asp.Net MVC (RC 5)
-
01-07-2019 - |
Pregunta
¿Cómo puedo manejar los errores 404 sin que el marco arroje un código de error Exception 500?
Solución
http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx da la siguiente explicación:
Agregue una regla de enrutamiento comodín como regla final:
routes.MapRoute("Error",
"{*url}",
new { controller = "Error", action = "Http404" });
Cualquier solicitud que no coincida con otra regla se enruta a la acción Http404 del controlador de errores, que también debes configurar:
public ActionResult Http404(string url) {
Response.StatusCode = 404;
ViewData["url"] = url;
return View();
}
Otros consejos
También puede anular HandleUnknownAction dentro de su controlador en los casos en que una solicitud coincide con un controlador, pero no coincide con una acción.La implementación predeterminada genera un error 404.
lanzar nueva HttpException(404, "Recurso no encontrado");
Con MVC 3 puedes devolver HttpNotFound() para devolver correctamente un 404.
Como esto:
public ActionResult Download(string fontName)
{
FontCache.InitalizeFonts();
fontName = HttpUtility.UrlDecode(fontName);
var font = FontCache.GetFontByName(fontName);
if (font == null)
return HttpNotFound();
return View(font);
}