404 Gestore errori HTTP in Asp.Net MVC (RC 5)
-
01-07-2019 - |
Domanda
Come posso gestire gli errori 404 senza che il framework generi un codice di errore Exception 500?
Soluzione
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 a un'altra regola viene instradata all'azione Http404 del controller di errore, che è inoltre necessario configurare:
public ActionResult Http404(string url) {
Response.StatusCode = 404;
ViewData["url"] = url;
return View();
}
Altri suggerimenti
Puoi anche sovrascrivere HandleUnknownAction nel tuo controller nei casi in cui una richiesta corrisponde a un controller, ma non corrisponde a un'azione. L'implementazione predefinita genera un errore 404.
lancia la nuova HttpException (404, "quotata risorsa non trovata");
Con MVC 3 puoi restituire HttpNotFound () per restituire correttamente un 404.
In questo modo:
public ActionResult Download(string fontName)
{
FontCache.InitalizeFonts();
fontName = HttpUtility.UrlDecode(fontName);
var font = FontCache.GetFontByName(fontName);
if (font == null)
return HttpNotFound();
return View(font);
}