Я использую MVC 3 с VS2010 и пытаюсь заставить работать [HandleError]. Я создал тест в контроллере для имитации сбоя следующим образом:
[HandleError]
public ActionResult Crash()
{
throw new ApplicationException();
}
Также зашел в web.config и добавил:
<customErrors mode="on" />
Если я запускаю из Chrome, MVC возвращает представление в Shared / Error.aspx, так что все работает нормально.
Если я запускаю из IE 8, я получаю дружественную страницу с ошибкой («Веб-сайт не может отобразить страницу, скорее всего, вызывает: ... Что вы можете попробовать ...»). Я вошел в Инструменты IE и выключил «Показать дружественное сообщение об ошибке HTTP» и запустился снова, и IE отображает мое представление Error.aspx. Очевидно, я не могу заставить пользователей изменить этот параметр, но по крайней мере я знаю, что возвращается мой Error.aspx.
Итак, я запускаю Fiddler, и когда я заставляю браузер перейти к методу Crash, он показывает, что, хотя MVC возвращает мое представление Error.aspx, оно возвращает 500 для Result. Это заставляет IE думать, что у него есть ошибка, и переопределяет мою страницу своей дружественной страницей.
Я думаю, что MVC должен возвращать результат 200 с моей страницей Error.aspx, а не 500. Кто-нибудь может дать мне несколько идей о том, что попробовать?