Мы хотим обработать 403 ошибки, 404 ошибки, все ошибки из-за MySpecialDomainException
и предоставить страницу ошибок по умолчанию для всех других ошибок (включая ошибки в конфигурации IIS!). Все ошибки должны возвращать правильные виды Razor, было бы очень приятно иметь ErrorController
перед представлениями. Например:
public class ErrorController : Controller
{
public ViewResult NotFound () { return View(); }
public ViewResult Forbidden () { return View(); }
public ViewResult Default ()
{
var ex = ObtainExceptionFromSomewhere();
if(ex is MySpecialDomainException)
return View("MySpecialDomainException", new ErrorModel { Exception = ex });
return View("GeneralError", new ErrorModel { Exception = ex });
}
}
В настоящее время вы найдете много разных способов сделать это на www, некоторые, скорее всего, устарели. Среди них:
- Controller.OnException()
- Фильтр ошибок
- элемент customErrors в web.config
- Обработка в приложении Global.asax Application_Error
Q1: Каков рекомендуемый способ выполнения наших требований с помощью ASP.NET MVC 5?
Также мы хотим поймать ошибки, происходящие на хосте IIS. Q2: Чтобы IIS не работал с любыми 404, мы думали о добавлении маршрута по умолчанию, соответствующего всем возможным URL-адресам, - это рекомендуется? Лучше зарегистрироваться вместо этого для 404-го ИИС?
Q3: Возможно ли зарегистрировать страницу ошибок IIS, которая возвращается к контроллеру, или IIS, способный только ASPX/статический HTML?