Pregunta

¿Cómo puedo manejar los errores 404 sin que el marco arroje un código de error Exception 500?

¿Fue útil?

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top