404 Http обработчик ошибок в Asp.Net MVC (RC 5) - PullRequest
19 голосов
/ 20 сентября 2008

Как я могу обработать ошибки 404 без фреймворка с кодом ошибки Exception 500?

Ответы [ 4 ]

20 голосов
/ 20 сентября 2008

http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx дает следующее объяснение:

Добавьте правило маршрутизации с подстановочными знаками в качестве окончательного правила:

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

Любой запрос, который не соответствует другому правилу, направляется на действие Http404 контроллера ошибок, которое также необходимо настроить:

public ActionResult Http404(string url) {
    Response.StatusCode = 404;
    ViewData["url"] = url;
    return View();
}
9 голосов
/ 21 сентября 2008

Вы также можете переопределить HandleUnknownAction внутри вашего контроллера в тех случаях, когда запрос соответствует контроллеру, но не соответствует действию. Реализация по умолчанию вызывает ошибку 404.

4 голосов
/ 10 мая 2010

выбросить новое исключение HttpException (404, «Ресурс не найден»);

0 голосов
/ 15 декабря 2011

С MVC 3 вы можете вернуть HttpNotFound (), чтобы правильно вернуть 404.

Как это:

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

    fontName = HttpUtility.UrlDecode(fontName);

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

    return View(font);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...