Я тоже с этим боролся, и, кажется, теперь я понимаю проблему.
Короче говоря, требования для работы [HandleError]
, как и ожидалось, следующие:
Вы должны включить пользовательские ошибки в web.config И вы также должны указать, где ваше представление ошибок находится в теге <customErrors>
.
Пример:
<customErrors mode="On" defaultRedirect="Error" />
Если вы пропустите часть defaultRedirect="Error"
, в браузере появится ошибка 500, а НЕ страница ошибок ASP.NET (YSOD).
Также вам не обязательно находиться в режиме разблокировки. Я проверил это с помощью отладочной сборки, и она работала нормально.
Моей средой была Visual Studio 2010 с использованием .NET 4 и стандартным шаблоном проекта «ASP.NET MVC 2 Web Application».
Что меня смутило, так это документация MSDN для класса HandleErrorAttribute. Там явно не сказано, что вы должны включить пользовательские ошибки в web.config . И я предположил, что все, что мне нужно, это атрибут [Handle Error]
.