404 gestore di errori Http in Asp.Net MVC (RC 5)

Come posso gestire gli errori 404 senza che il framework lanci un codice di errore di Exception 500?

http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx fornisce la seguente spiegazione:

Aggiungi una regola di routing con caratteri jolly come regola finale:

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

Qualsiasi richiesta che non corrisponde ad un’altra regola viene instradata all’azione Http404 del controller Errore, che devi anche configurare:

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

È inoltre ansible eseguire l’override di HandleUnknownAction all’interno del controller nei casi in cui una richiesta corrisponda a un controller, ma non corrisponde a un’azione. L’implementazione predefinita genera un errore 404.

lanciare una nuova HttpException (404, “Risorsa non trovata”);

Con MVC 3 è ansible restituire HttpNotFound () per restituire correttamente un 404.

Come questo:

 public ActionResult Download(string fontName) { FontCache.InitalizeFonts(); fontName = HttpUtility.UrlDecode(fontName); var font = FontCache.GetFontByName(fontName); if (font == null) return HttpNotFound(); return View(font); }