“Тайм-аут был достигнут при ожидании сервиса соединить” ошибку после перезагрузки

У меня есть пользовательски записанная служба Windows, которую я выполняю в ряде Hyper-V VMs. VMs перезагружается пару раз час как часть некоторых автоматизированных запущенных тестов. Сервис установлен на автоматический запуск и почти все время, он запускает прекрасный.

Однако, возможно, 5% времени, без шаблона, который я могу различить, сервис, не удается запуститься. Когда это перестало работать, я получаю ошибку в высказывании Event Viewer

Тайм-аут был достигнут (30 000 миллисекунд) при ожидании Моей Сервисной службы имен для соединения.

Когда это происходит, я могу запустить сервис вручную или перезапустить снова, и сервис запустится прекрасный.

Вещь, которую я не могу выяснить, состоит в том, что 30 вторых тайм-аутов, кажется, не происходят в моем коде. Самая первая строка OnStart моего класса обслуживания () метод регистрируется "Запускающийся..." к его журналу log4net. Когда сервису не удается запуститься, я даже не зарегистрировал ничего вообще, которое указывает мне, что или log4net не может зарегистрироваться по любой причине, или тайм-аут происходит, прежде чем мой OnStart () называют.

Сервис работает на множестве Ose от XP полностью до Win7 и 2008R2, и я знаю, что установка сервиса к отложенному запускается, может решить это для Vista и позже, но это походит на взлом.

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

44
задан Zack Elan 31 December 2009 в 17:25
поделиться

1 ответ

Мое предположение - и это все, что есть - это то, что диск жестко мчится во время запуска, до такой степени, что .NET Framework сам по себе не запускается в течение 30 секунд, которые Windows выделяет для запуска служб.

Обходным решением может быть установка запуска службы вручную, а затем запись очень маленькой службы заглушки в неуправляемый код (например, C++, Delphi) для запуска службы.

Другой подход может заключаться в удаленном запуске службы с другой машины. Команда sc должна хорошо выполнять эту работу.

6
ответ дан 26 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: