У меня есть приложение MVC 2, которое всегда должно выдавать «хорошую» страницу 404.
Однако в настоящее время я получаю низкоуровневое .Net one: «Ошибка сервера в приложении / sitename»... "
У меня есть базовый контроллер, у которого есть действие NotFound
, которое отобразит красивую страницу 404.
Обработка пропущенных действий:
protected override void HandleUnknownAction(string actionName)
{
this.NotFound(actionName).ExecuteResult(this.ControllerContext);
}
Таким образом, посещение {site}/ValidController/NotAnAction
проходит правильно.
Однако посещение {site}/NotAController
не выполняется.
У меня настроены маршруты с перехватом всех:
routes.MapRoute(
"MVC routes",
"{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"Catch All",
"{*url}",
new { controller = "System", action = "NotFound" });
Поймать все правильно, ловит маршруты, которые не совпадают.
Таким образом, {site}/Invalid/Action/id/extra
правильно маршрутизируется через перехватить все.
Однако {site}/Invalid
выбирается через«Маршруты MVC» и ASP.Net ищут InvalidController
и выдают тупое исключение, когда не находят его.
Я знаю, что могу переопределить это на уровне web.config
, ноэто просто перенаправляет на страницу.Я хотел бы знать, когда шаблон маршрута соответствует, но контроллер не является допустимым именем контроллера.
Где я могу поймать и изменить это поведение?