Domanda

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

È stato utile?

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top