global.asax Application_Error не запускается - PullRequest
17 голосов
/ 15 сентября 2010

Мой 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?

Ответы [ 4 ]

19 голосов
/ 28 июля 2011

Если у вас нет раздела customErrors в вашем Web.config, это то же самое, что раздел с mode="RemoteOnly". Этот режим customError заставит локальные запросы (сделанные с сервера, на котором работает IIS) не использовать пользовательские ошибки, и он будет выполнять метод Application_Error(), как и ожидалось. Удаленные запросы будут использовать customErrors и не будут выполнять метод, упомянутый выше.

Это объясняет, почему вы наблюдаете другое поведение локально, чем на вашем сервере. Вы можете воспроизвести это поведение в любой среде, явно изменив режим customErrors на On или Off. Вкл. Не выполнит секцию Application_Error(), в то время как Выкл.

<customErrors mode="On|Off|RemoteOnly" />

Конечно, это не решит вашу проблему, то есть вы хотите, чтобы метод выполнялся независимо. У меня есть вознаграждение за другой вопрос , где мы пытаемся выяснить, почему метод Application_Error() не запускается, когда включен режим customErrors. Вернитесь туда через пару дней, чтобы узнать, нашли ли мы решение.

4 голосов
/ 04 февраля 2012

Если вы используете IIS 7, попробуйте установить:

Response.TrySkipIisCustomErrors = true;
3 голосов
/ 04 января 2013

Если вы ранее развернули свое приложение как предварительно скомпилированное, но теперь это не так, то да, вам нужно удалить PrecompiledApp.config и файл Deployment.dll в каталоге bin..NET будет использовать глобальный код в Deployment.dll вместо ваших изменений.

0 голосов
/ 15 сентября 2010

В IIS7 пул приложений интегрирован. Это должно быть классическим: http://praveenbattula.blogspot.com/2009/12/iis-7-managed-pipeline-mode-globalasax.html

...