MVC HandleError возвращает ошибку 500 и просматривает страницу ошибки - PullRequest
3 голосов
/ 28 февраля 2011

Я использую 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. Кто-нибудь может дать мне несколько идей о том, что попробовать?

1 Ответ

8 голосов
/ 01 апреля 2011

Если вы сделаете страницу ошибок> 512 байт, она должна работать нормально. Просто IE - невежливая свинья, как всегда .

...