404 Http manipulador de erro em Asp.Net MVC (RC 5)
-
01-07-2019 - |
Pergunta
Como posso Handler 404 erros, sem o enquadramento jogando um código de erro Exceção 500?
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);
}