Gestionnaire d'erreurs HTTP 404 dans Asp.Net MVC (RC 5)
-
01-07-2019 - |
Question
Comment puis-je gérer les erreurs 404 sans que la structure génère un code d'erreur Exception 500?
La solution
http: // jason. whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx donne l'explication suivante:
Ajoutez une règle de routage générique en tant que règle finale:
routes.MapRoute("Error",
"{*url}",
new { controller = "Error", action = "Http404" });
Toute demande qui ne correspond pas à une autre règle est routée vers l'action Http404 du contrôleur d'erreur, que vous devez également configurer:
public ActionResult Http404(string url) {
Response.StatusCode = 404;
ViewData["url"] = url;
return View();
}
Autres conseils
Vous pouvez également remplacer HandleUnknownAction dans votre contrôleur dans les cas où une demande correspond à un contrôleur, mais ne correspond pas à une action. L’implémentation par défaut génère une erreur 404.
lancer la nouvelle HttpException (404, "Ressource non trouvée");
Avec MVC 3, vous pouvez renvoyer HttpNotFound () pour renvoyer correctement un 404.
Comme ceci:
public ActionResult Download(string fontName)
{
FontCache.InitalizeFonts();
fontName = HttpUtility.UrlDecode(fontName);
var font = FontCache.GetFontByName(fontName);
if (font == null)
return HttpNotFound();
return View(font);
}