Pergunta

Como posso Handler 404 erros, sem o enquadramento jogando um código de erro Exceção 500?

Foi útil?

Solução

http: // jason. whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx dá a seguinte explicação:

Adicionar uma regra de roteamento curinga como sua regra final:

routes.MapRoute("Error", 
                "{*url}", 
                new { controller = "Error", action = "Http404" });

Qualquer pedido que não corresponde a uma outra regra é roteado para a ação Http404 do controlador de erro, que você também precisa de configuração:

public ActionResult Http404(string url) {
    Response.StatusCode = 404;
    ViewData["url"] = url;
    return View();
}

Outras dicas

Você também pode substituir HandleUnknownAction dentro de seu controlador, nos casos em que um pedido coincide com um controlador, mas não corresponde a uma ação. A implementação padrão faz levantar um erro 404.

throw new HttpException (404, "Resource Not Found");

Com MVC 3 pode voltar HttpNotFound () para retornar corretamente a 404.

Como esta:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top