Назад | Перейти на главную страницу

Служба Windows не запускается автоматически, если виртуальный сервер запускается из деинициализированного состояния

У меня есть серверное приложение, работающее на виртуальной машине, размещенной в Azure. Это приложение состоит из четырех служб Windows.

Каждую ночь я выключаю (деинициализирую) виртуальную машину.

Когда я перезагружаю машину, одна из четырех служб не запускается. Обычно это один и тот же.

Если я перезапущу машину, запустятся все четыре службы. Если я остановлю машину (оставив ее подготовленной), а затем снова запустил, все четыре службы запустятся. Служба не запускается только тогда, когда машина запускается с деинициализированного запуска.

Я смотрю в журналы событий и вижу следующую ошибку:

Истекло время ожидания (30000 миллисекунд) при ожидании подключения службы

Я пробовал настроить Восстановление параметры службы, чтобы она перезапускала службу после сбоя, с Включите действия для стопов с ошибками: поставлен галочкой. Это не имеет никакого эффекта.

Мой служебный код - это приложение .NET. Я реализовал ведение журнала и записал его в файл, как только он запустится. Когда он не запускается, записи в журнал не записываются. Как будто приложение полностью не загружается.

Есть ли рекомендуемый способ решения этой проблемы? (то есть, чтобы диагностировать основную причину и предотвратить ее возникновение).

Установите тип запуска службы как «Автоматический (отложенный запуск)». Поскольку служба запускает .Net и ничего не регистрирует в течение 30-секундного тайм-аута, ясно, что сборки .Net не загрузились вовремя (холодный старт). К сожалению, у вас нет контроля над этим, поэтому лучше всего отложить его запуск. Всегда работал у меня!