Topshelf Windows Service Установка никогда не заканчивается
У меня есть три службы Windows, все созданные с помощью TopShelf. Все три настроены очень схожим образом, поэтому я обновил свои три проекта для использования проекта с общим типом фреймворка.
public void StartService()
{
HostFactory.New(x =>
{
x.Service<IService>(s =>
{
s.ConstructUsing(() =>_service);
s.WhenStarted(poller => poller.Start());
s.WhenStopped(poller => poller.Stop());
});
x.EnableShutdown();
x.RunAsLocalSystem();
x.SetDescription(description);
x.SetDisplayName(display);
x.SetServiceName(name);
x.StartAutomatically();
x.OnException(ex =>
{
ExceptionManager.Publish(ex);
});
x.EnableServiceRecovery(rc =>
{
rc.RestartService(1);
rc.RestartService(1);
rc.RestartService(1);
});
}).Run();
}
Для развертывания этих сервисов в Octopus есть шаг, который запускается для каждого сервиса. Шаг выполняет следующие действия: (Все команды выполняются с использованием powershell)
- D:\myservicename.exe stop
- D:\myservicename.exe удалить
- Развертывание нового кода в папке назначения
- D:\myservicename.exe установить
- D:\myservicename.exe запускается
Это продолжает работать для двух моих услуг. Для третьего сервиса команды вступают в силу, но, кажется, никогда не заканчивают. Я запустил их вручную на сервере в powershell и в командной строке, и у меня возникла та же проблема. Выполняемая команда вступает в силу, но никогда не завершается. Я должен Ctrl+C, чтобы остановить это.
Я подумал, что служба может зависнуть каким-то образом, поэтому я попытался удалить ее с помощью sc delete и затем перезапустить окно, но это не дало никакого эффекта. Все три службы работают без ошибок при запуске.
До этого изменения все три службы работали и развертывались без проблем. Когда я возвращаю метод запуска сервиса обратно в основной метод сервиса, который доставляет мне проблемы, он работает.
Кто-нибудь сталкивался с этим раньше? Можно ли как-то сказать команде подождать, пока она не получит правильный ответ? Или есть способ получить более подробную информацию, если на самом деле здесь происходит ошибка?