404 obsługa błędów Http w Asp.Net MVC (RC 5)

Jak mogę obsługiwać błędy 404 bez frameworka rzucającego kod błędu Exception 500?

Author: Peter, 2008-09-20

4 answers

Http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx daje następujące wyjaśnienie:

Dodaj regułę routingu wieloznacznego jako ostateczną regułę:

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

Każde żądanie, które nie pasuje do innej reguły, jest kierowane do działania Http404 kontrolera błędów, które należy również skonfigurować:

public ActionResult Http404(string url) {
    Response.StatusCode = 404;
    ViewData["url"] = url;
    return View();
}
 20
Author: dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-31 11:38:06

Można również zastąpić HandleUnknownAction wewnątrz kontrolera w przypadkach, gdy żądanie pasuje do kontrolera, ale nie pasuje do akcji. Domyślna implementacja powoduje błąd 404.

 9
Author: Haacked,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-21 17:48:17

Throw new HttpException (404, "Resource Not Found");

 4
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-10 14:33:01

Z MVC 3 możesz zwrócić HttpNotFound (), aby poprawnie zwrócić 404.

Tak:

public ActionResult Download(string fontName)
{
    FontCache.InitalizeFonts();

    fontName = HttpUtility.UrlDecode(fontName);

    var font = FontCache.GetFontByName(fontName);
    if (font == null)
        return HttpNotFound();

    return View(font);
}
 0
Author: Lone Coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-15 19:42:00