Asp.Net MVC 3 App HandleError не работает - PullRequest
3 голосов
/ 25 февраля 2012

Хорошо, я думаю, что я готов к каждому посту в StackOverflow по этому поводу, но все еще не повезло.

Я подтвердил в своем global.asax, что фильтр HandleErrorAttribute регистрируется. Я установил customErrors mode="On" в моем web.config. Я изменил Layout=null на Layout="~/Views/Shared/_Layout.cshtml" в моем файле Error.cshtml.

Затем я добавил throw Exception() в действие Index на контроллере своего аккаунта и перешел к localhost:5050/Account/Index, но у меня возникли стандартные ошибки в стеке YSOD.

Я даже попробовал следующее (хотя, насколько я понимаю, это не должно иметь значения):

  1. Добавьте [HandleError] и [HandleError(View="Error")] к моему контроллеру.
  2. Добавить defaultRedirect="Error" к моим customErrors в web.config

Что еще я могу сделать? Есть ли способ узнать, что происходит в фильтре HandleError или узнать, генерируется ли представление ошибок вообще?

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

P.S. Кстати, я использую VS2010, IE9 и Chrome

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

Ладно, невежество не всегда блаженство ... иногда быть невежественным просто разочаровывает!

Оказывается, я редактировал файл web.config, расположенный в моей папке Views, а не web.config для моего сайта, как я думал.

Как только я добавил customErrors mode="On" в свой настоящий web.config, все заработало отлично.

Спасибо всем, кто пытался помочь.

0 голосов
/ 25 февраля 2012

Я не могу воспроизвести проблему.Весьма вероятно, что в ваших шаблонах _Layout.cshtml или Error.cshtml есть ошибка.Или частично, что эти шаблоны могут зависеть от.

Шаги:

  1. Создайте новое приложение ASP.NET MVC 3, используя шаблон по умолчанию
  2. Добавить <customErrors mode="On" /> to web.config
  3. Добавьте throw new Exception(); в тело действия LogOn на контроллере Account.
  4. Запустите сайт и перейдите к /account/logon
  5. Представление Error.cshtml отображается правильно

Полученный вами YSOD обычно содержит трассировку стека исключений, которая должна помочь вам изолировать проблему.Поэтому, чтобы попытаться изолировать проблему, попробуйте исключить любой потенциальный код из тех шаблонов, которые могут вызвать проблему.Попробуйте ввести Layout = null в шаблоне Error, чтобы устранить макет.И если есть ошибка (как я подозреваю) в ваших шаблонах Layout или Error, вы получите следующее:

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...