У меня есть специальная служба Windows, которую я запускаю на нескольких виртуальных машинах Hyper-V. Виртуальные машины перезагружаются пару раз в час в рамках некоторых автоматизированных тестов. Служба настроена на автоматический запуск и почти все время, она начинается нормально.
Однако, возможно, 5% времени, без шаблона, который я могу различить, служба не запускается. Когда он терпит неудачу, я получаю сообщение об ошибке в средстве просмотра событий, говоря
Таймаут был достигнут (30000 миллисекунд) в ожидании подключения службы "Мое имя службы".
Когда это произойдет, я могу запустить службу вручную или перезапустить снова, и служба начнет нормально.
Я не могу понять, что 30-секундный тайм-аут не появляется в моем коде. В первой строке моего метода сервиса OnStart() мой журнал журнала "Start..." записывает журнал журнала log4net. Когда служба не запускается, я даже ничего не регистрирую вообще, что указывает на то, что либо log4net не может регистрироваться по какой-либо причине, либо тайм-аут происходит до вызова OnStart().
Служба работает на разных операционных системах: от XP вплоть до Win7 и 2008R2, и я знаю, что установка службы для отложенного запуска может решить эту проблему для Vista и позже, но это похоже на взлом.
Я не смог удаленно отлаживать это из-за того, что это происходит с периодичностью и во время запуска системы, и я в недоумении относительно дальнейших способов попытаться выяснить, что происходит. Любые идеи?