У меня есть приложение, работающее в собственном пуле приложений, которое часто записывает в текстовый файл журнала. Когда срабатывает 29-часовой фиксированный перезапуск, я обычно сталкиваюсь с проблемами, потому что новый процесс запускается, пока старый процесс все еще там. Это приводит к тому, что «невозможно открыть файл, потому что он используется другим процессом».
Сначала я просто попытался установить Disable Overlapped Cycle на True, но это отключило мою службу на 90 или более секунд, что не очень хорошо. Если я уменьшу Ограничение времени выключения Я полагаю, это поможет, но я бы предпочел не прерывать процесс немедленно.
Я попытался настроить обработчик Application_End
в Global.asax, но я обнаружил, что его почти никогда не вызывают, потому что (я думаю) мой процесс все еще где-то выполняет поток (возможно, процесс регистрации).
Я пытался Application_Disposed
, но до сих пор он не вызывается, когда IIS завершает процесс после истечения времени выключения, и, вероятно, к тому времени будет слишком поздно, если я вернусь к перезаписанному циклу, который я считаю предпочтительным.
Мне нужен сигнал от IIS «Эй, я хочу, чтобы ты остановился», который позволяет мне немедленно закрыть файл журнала, но его, похоже, не существует.
Любые предложения будут оценены.