Не перенаправляет на страницу ошибки, когда представление не компилируется - PullRequest
3 голосов
/ 16 ноября 2011

Я заметил, что если в представлении есть ошибка компиляции и включены пользовательские ошибки, среда не запускает Application_Error(object sender, EventArgs e) в «global.cs» или не перенаправляет на URL defaultRedirect в конфигурацииsettings.

Вместо этого он загружает главную страницу, изменяя заголовок на Error и помещая следующие

<h2> Sorry, an error occurred while processing your request. </h2>

, где должно быть содержимое просмотра.

Кто-нибудь знаетспособ заставить его обрабатывать эти ошибки, как и любые другие?

PS Я знаю, что в представлении не должно быть ошибок компиляции, но у нас был случай, когда файл представления был поврежден и не был замечен каккод регистрации находится в Application_Error(object sender, EventArgs e).

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Используете ли вы атрибут ошибки дескриптора?

[HandleError]

Я размещаю атрибут на уровне контроллера, а не на отдельных методах Action. Затем внутри контроллера я перезаписываю событие OnException, чтобы перехватить ошибку.

    protected override void OnException(ExceptionContext filterContext)
    {
        EventLog.WriteEntry("MyAppError", filterContext.Exception.ToString(), EventLogEntryType.Error);
        base.OnException(filterContext);
    }

Тогда я не отменяю событие Application_Error. Я все еще использую страницу «Ошибка» в папке Views \ Shared

0 голосов
/ 18 ноября 2011

Нашел это. Для обработки ошибок я использую контроллер ошибок с собственными представлениями.

После некоторого расчесывания головы я обнаружил, что у нас все еще была страница Ошибка по умолчанию в каталоге Views \ Shared. Это то, что оказывалось. Почему он использовал это и не указывал URL в части defaultRedirect файла web.config или вызывал Application_Error (отправитель объекта, EventArgs e), я не знаю.

Когда я удалил его, он начал обрабатывать исключения компилятора так же, как и все остальные исключения.

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