Как проверить, вызывается ли файл Global.asax

Мне трудно выполнить событие On_Error в файле Global.asax. Когда приложение получает ошибку, оно должно перейти к файлу Global.asax, зарегистрировать ошибку в базе данных и перенаправить на пользовательскую страницу ошибки. Приведенный выше код отлично работает на моем локальном компьютере, но как только я развертываю его на машине DEV, Global.asax не выполняется.

Он всегда перенаправляет на пользовательскую страницу ошибки, о которой я упоминал в web.config.

<customErrors mode="On" defaultRedirect="/Error_Redirect.asp">
        <error statusCode="404" redirect="/404.asp"/>
    </customErrors>

Структура проекта в IIS похожа на Test1\Test2. Код обработки ошибок, который я пытаюсь использовать, находится в тесте 2, и это виртуальный каталог в IIS. Если у меня есть какая-либо ошибка в файле web.config, например «Уже упомянутый раздел», то ошибка попадает в файл Global.asax. Если есть какие-либо ошибки во время выполнения, как показано ниже, они не попадают в файл Global.asax.

Int32 i, j, k;
i = 10;

j = 0;

k = i / j;

Response.Write(k);

. Мне даже надоело ставить режим Off/RemoteOnly. Какие-либо предложения??

Спасибо,


person Vani    schedule 15.02.2012    source источник
comment
@ Тим Я пробовал эти варианты. Но похоже, что срабатывание Global.asax непоследовательно. Иногда он попадает в файл Global.asax, но не постоянно. Интересно, связано ли это с настройкой IIS.   -  person Vani    schedule 18.02.2012
comment
Вы не имеете в виду событие Application_Error? Событие срабатывает только в том случае, если customErrors mode=Off.   -  person Eric H    schedule 27.02.2012
comment
Эрик... Я тоже пробовал. Режим customErrors=Off , но все же ошибки не попадают в Global.asax.   -  person Vani    schedule 27.02.2012
comment
Вы устанавливаете проект Test 2 global.asax и веб-конфигурацию?   -  person Özgür Kara    schedule 01.03.2012
comment
Я заметил, что в вашем web.config вы пропустили x из "/Error_Redirect.asp" и из 404 - redirect="/404.asp". Это намеренно? Если да, пытались ли вы установить для него статическое (html) или расширение asp.net (aspx)?   -  person Josh E    schedule 05.03.2012
comment
@Kara да, я смотрю проект Test 2 global.asax и web.config   -  person Vani    schedule 14.03.2012
comment
@Josh E, я тоже пробовал с aspx .. не повезло   -  person Vani    schedule 14.03.2012


Ответы (3)


Вы должны попытаться удалить файл precompiledapp.config из корня. (хотя бы временно переименовать)

person Har    schedule 05.03.2012

Ваш браузер может кэшировать перенаправление. попробуйте немного изменить URL, чтобы он отличался. Например, добавив ?something после вашего текущего URL-адреса, тогда вы можете быть уверены, что он не кэшируется в вашем браузере.

Или вы также можете попробовать удалить в своем браузере Ctrl+Shift, чтобы удалить кеш.

Если вам нужно быть уверенным, что ваш глобальный asax работает, вы можете использовать что-то подобное в обработчике событий внутри файла global.asax.

HttpContext.Current.Response.Write("TEST");
HttpContext.Current.Response.End();
person Jiří Herník    schedule 05.03.2012

Есть ли шанс, что ваше приложение загружается в несколько процессов или доменов ASP.NET? Поскольку вы используете «Test1/Test2», не думаете ли вы, что иногда URL-адрес, который вы вызываете, проходит через «Test1/Test2», а иногда и через «Test2»?

Недавно я работал над POC в ASP.NET и по ошибке переместил Global.asax во вложенную папку, а не в корень приложения. Я ожидал, что какой-то код в событии запуска приложения сработает, но он так и не сработал. После перемещения его обратно в корень приложения это начало работать, как и ожидалось.

Таким образом, когда вы вызываете через «Test2», срабатывает обработчик исключений вашего Global.asax, а когда вы вызываете через «Test1/Test2», ваш Global.asax не срабатывает.

person Dhwanil Shah    schedule 01.03.2012
comment
Моя структура папок похожа на FolderA/FolderB. Папка B содержит .aspx.cs [файл, содержащий ошибку] ​​и файл global.asax. - person Vani; 22.03.2012