Пользовательская страница ошибок в asp.net mvc 3

#asp.net-mvc-3

#asp.net-mvc-3

Вопрос:

У меня есть новый asp.net веб-сайт mvc 3 с движком razor, и я пытаюсь подготовить сайт к производству, где у меня не может появиться желтый экран смерти. В webforms это просто, просто включите customErrors в web.config, и все готово.

Для тестирования я настраиваю метод тестового контроллера как таковой:

     public ActionResult Ex()
    {
        throw new InvalidOperationException();
    }
  

Я ожидал, что будет отображен вид ошибки (/Views / Shared /Error.cshtml), вместо этого я получаю желтый экран смерти с сообщением «Операция недопустима из-за текущего состояния объекта». Я попытался включить customErrors в web.config, и это все еще не работает. Я вызываю метод RegisterGlobalFilters в Global.asax, но также пытался напрямую применить атрибут HandleError.

Спасибо за вашу помощь.

Комментарии:

1. Сообщение, которое вы видите, ожидается при включенных пользовательских ошибках — что произошло с отключенными пользовательскими ошибками?

Ответ №1:

Включите пользовательские ошибки и перенаправьте их на контроллер ошибок.

 <customErrors mode="On" defaultRedirect="~/Error/Unknown">
  <error statusCode="403" redirect="~/Error/NoAccess" />
  <error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>
  

Контроллеру нужны действия Unknown, NoAccess и NotFound. Каждая из них должна будет возвращать представление.