ASP.MVC атрибут HandleError не работает

Я знаю, что это общая проблема, но я просканировал многие дискуссии безрезультатно.

Я пытаюсь обрабатывать ошибки с помощью атрибута HandleError ASP.MVC. Я использую MVC 4.

Моя страница ошибок находится в Views / Shared / Error.cshtml и выглядит так:

Test error page
<hgroup class="title">
    <h1 class="error">Error.</h1>
    <h2 class="error">An error occurred while processing your request.</h2>
</hgroup>

Мой FilterConfig.cs в папке App-Start:

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }
    }

Мой контроллер:

public class TestController : Controller
    {
        [HandleError(View = "Error")]
        public ActionResult Index()
        {
            throw new Exception("oops");
        }
    }

И, наконец, мой Web.config имеет следующий узел:

<customErrors mode="On" defaultRedirect="Error">
</customErrors>

Когда я вызываю действие контроллера, я получаю белый экран со следующим текстом:

Ошибка сервера в приложении '/'

Ошибка выполнения Описание: при обработке вашего запроса возникла исключительная ситуация. Кроме того, во время выполнения пользовательской страницы ошибок для первого исключения произошло другое исключение. Запрос был прекращен.

Если defaultRedirect = "Ошибка" не установлен в файле Web.config, я получаю желтый экран со следующим текстом:

Ошибка сервера в приложении '/'

Ошибка выполнения Описание: на сервере произошла ошибка приложения. Текущие пользовательские настройки ошибок для этого приложения предотвращают просмотр сведений об ошибке приложения.

Подробно: Чтобы детали этого конкретного сообщения об ошибке можно было просматривать на локальном сервере, создайте тег в файле конфигурации «web.config», расположенном в корневом каталоге текущего веб-приложения. Для этого тега должен быть установлен атрибут «mode» «RemoteOnly». Чтобы детали были доступны для просмотра на удаленных компьютерах, установите для «mode» значение «Off».

Примечания: текущую страницу ошибок, которую вы видите, можно заменить пользовательской страницей ошибок, изменив атрибут defaultRedirect тега конфигурации приложения, чтобы он указывал на URL-адрес пользовательской страницы ошибок.

Кто-нибудь знает, что может быть не так?

РЕДАКТИРОВАТЬ:

Ошибки были вызваны использованием строго типизированного макета. Когда выдается ошибка, механизм обработки ошибок MVC создает объект HandleErrorInfo, который передается в представление Error. Однако если мы используем строго типизированный макет, типы не совпадают.

Решением в моем случае является использование метода Application_Error в Global.asax, который был прекрасно описан SBirthare ниже.

Ответы на вопрос(2)

Ваш ответ на вопрос