Global.asax Application_Error не работает
Мой global.asax, похоже, не стреляет. У меня есть:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
Server.Transfer("~/ExceptionFormView.aspx");
}
В моем web.config у меня нет ничего подобного CustomErrors. Поскольку я хочу, чтобы все обрабатывалось Global.asax и передавалось в ExceptionFormView.aspx.
Он работает нормально локально, но не при развертывании на серверах. Любые мысли?
Мне нужен PrecompiledApp.config?
Ответы
Ответ 1
Если у вас нет раздела customErrors
в вашем Web.config, это то же самое, что и раздел с mode="RemoteOnly"
. Этот режим customError заставит локальные запросы (сделанные с сервера, на котором запущен IIS) не использовать пользовательские ошибки, и он выполнит метод Application_Error()
, как и ожидалось. Удаленные запросы будут использовать customErrors и не выполнять упомянутый выше метод.
Это объясняет, почему вы видите другое поведение локально, чем на своем сервере. Вы можете воспроизвести это поведение в любой среде, явно изменив режим customErrors на On или Off. Вкл. Не будет выполнять раздел Application_Error()
, когда выкл. Будет.
<customErrors mode="On|Off|RemoteOnly" />
Это не решает вашу проблему, конечно, что вы хотите, чтобы метод выполнялся независимо. У меня есть щедрость на другом вопросе, где мы пытаемся выяснить, почему метод Application_Error()
не срабатывает, когда режим customErrors включен. Проверьте это через пару дней, чтобы узнать, нашли ли мы решение.
Ответ 2
Если вы используете IIS 7, попробуйте установить:
Response.TrySkipIisCustomErrors = true;
Ответ 3
Если вы ранее развертывали ваше приложение как предварительно скомпилированное, но теперь вы этого не сделали, то да, вам нужно удалить PrecompiledApp.config и вашу Deployment.dll в каталоге bin..NET будет использовать глобальный код в Deployment.dll вместо ваших изменений.
Ответ 4
В IIS7 объединен пул приложений. Он должен быть классическим:
http://praveenbattula.blogspot.com/2009/12/iis-7-managed-pipeline-mode-globalasax.html