Как узнать, почему перезапускается веб-приложение ASP.NET? - PullRequest
3 голосов
/ 30 декабря 2011

В моем веб-приложении Application.End вызывается после каждого запроса по какой-либо причине, и приложение перезапускается. Когда я устанавливаю точку останова в Applicaion_End, я не получаю полезную трассировку стека. Кроме того, в Event Viewer нет записей. Согласно MSDN, перезапуск приложения может вызвать следующее:

  • Добавление, изменение или удаление сборок из корзины приложения. папка.
  • Добавление, изменение или удаление ресурсов локализации из Папки App_GlobalResources или App_LocalResources.
  • Добавление, изменение или удаление файла приложения Global.asax.
  • Добавление, изменение или удаление файлов исходного кода в App_Code каталог.
  • Добавление, изменение или удаление конфигурации профиля.
  • Добавление, изменение или удаление ссылок на веб-службы в Каталог App_WebReferences.
  • Добавление, изменение или удаление файла Web.config приложения.

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

Редактировать: Теперь я решил свою проблему, пошагово просматривая код и просматривая метки времени в Проводнике. При запуске приложения я читаю значение из базы данных доступа, которая вызывает создание и удаление файла .ldb. Однако на этот вопрос пока нет ответа. Есть ли в журнале записи таких событий, которые вызывают перезапуск приложения?

1 Ответ

4 голосов
/ 30 декабря 2011

Тесс Феррандез написала хорошую запись в блоге о том, как определить причину повторного использования домена приложения. У Тесс есть что сказать о том, как регистрировать событие перезапуска:

Как вы определяете причину перезапуска домена приложения? В ASP.NET 2.0 вы можете использовать встроенные события мониторинга работоспособности для регистрации перезапусков приложений вместе с причиной перезапуска. Сделать это вы меняете главный файл web.config в C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG и добавьте следующий раздел

<healthMonitoring>
  <rules>
    <add name="Application Lifetime Events Default" 
         eventName="Application Lifetime Events"
         provider="EventLogProvider" profile="Default" minInstances="1"
         maxLimit="Infinite" minInterval="00:01:00" custom="" />

Чтобы включить ведение журнала для IIS6, вы можете использовать:

cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255

Для IIS7 вы можете управлять им из диспетчера IIS - Пулы приложений - Расширенные настройки.

...