Иногда, когда IIS перезапускает пул приложений, он запускает новый экземпляр моего приложения до полного его закрытия. Это вызывает у меня много проблем, поэтому мне интересно, что я могу с этим поделать.
Ход действий идет примерно так. (около 20 секунд)
- Приложение работает, давайте назовем этот экземпляр A.
- Перезагрузка инициализирует
- Новый экземпляр запущен, давайте назовем это B (Logged by Application_Start)
- Запрос на поступление обрабатывается экземпляром B, это делает недействительными все кэшированные данные A.
- Таймер на экземпляре A срабатывает, предполагает, что его кеш действителен и записывает что-то недопустимое в постоянное хранилище.
- Экземпляр A выключен (зарегистрирован Application_End)
Предпочтительно, я бы хотел полностью отключить вышеуказанное поведение, IIS должен разрешать только один экземпляр. Если это невозможно, могу ли я в своем коде определить, запущены ли другие экземпляры, а затем дождаться его завершения внутри application_start? Если это невозможно, как лучше обойти это?