Обработчик ошибок Http 404 в Asp.Net MVC (RC 5)
-
01-07-2019 - |
Вопрос
Как я могу обработать ошибки 404 без того, чтобы фреймворк не выдавал код ошибки Exception 500?
Решение
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();
}
Другие советы
Вы также можете переопределить HandleUnknownAction внутри вашего контроллера в тех случаях, когда запрос действительно соответствует контроллеру, но не соответствует действию.Реализация по умолчанию действительно выдает ошибку 404.
создать новое исключение HttpException (404, "Ресурс не найден");
С помощью 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);
}