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)

  1. D:\myservicename.exe stop
  2. D:\myservicename.exe удалить
  3. Развертывание нового кода в папке назначения
  4. D:\myservicename.exe установить
  5. D:\myservicename.exe запускается

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

Командное окно

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

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

Кто-нибудь сталкивался с этим раньше? Можно ли как-то сказать команде подождать, пока она не получит правильный ответ? Или есть способ получить более подробную информацию, если на самом деле здесь происходит ошибка?

0 ответов

Другие вопросы по тегам