У меня есть серверное приложение, работающее на виртуальной машине, размещенной в Azure. Это приложение состоит из четырех служб Windows.
Каждую ночь я выключаю (деинициализирую) виртуальную машину.
Когда я перезагружаю машину, одна из четырех служб не запускается. Обычно это один и тот же.
Если я перезапущу машину, запустятся все четыре службы. Если я остановлю машину (оставив ее подготовленной), а затем снова запустил, все четыре службы запустятся. Служба не запускается только тогда, когда машина запускается с деинициализированного запуска.
Я смотрю в журналы событий и вижу следующую ошибку:
Истекло время ожидания (30000 миллисекунд) при ожидании подключения службы
Я пробовал настроить Восстановление параметры службы, чтобы она перезапускала службу после сбоя, с Включите действия для стопов с ошибками: поставлен галочкой. Это не имеет никакого эффекта.
Мой служебный код - это приложение .NET. Я реализовал ведение журнала и записал его в файл, как только он запустится. Когда он не запускается, записи в журнал не записываются. Как будто приложение полностью не загружается.
Есть ли рекомендуемый способ решения этой проблемы? (то есть, чтобы диагностировать основную причину и предотвратить ее возникновение).
Установите тип запуска службы как «Автоматический (отложенный запуск)». Поскольку служба запускает .Net и ничего не регистрирует в течение 30-секундного тайм-аута, ясно, что сборки .Net не загрузились вовремя (холодный старт). К сожалению, у вас нет контроля над этим, поэтому лучше всего отложить его запуск. Всегда работал у меня!