Topshelf Windows服务安装永远不会完成

时间:2017-12-21 21:57:41

标签: c# powershell windows-services topshelf octopus

我有三个使用TopShelf创建的Windows服务。所有三个都配置非常相似,所以我更新了我的三个项目以使用共享框架类型项目。

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 uninstall
  3. 将新代码部署到文件夹目标
  4. D:\ myservicename.exe install
  5. D:\ myservicename.exe start
  6. 这继续适用于我的两项服务。对于第三个服务,命令生效但似乎永远不会完成。我在powershell和命令行中在服务器上手动运行这些,我遇到了同样的问题。正在运行的命令生效但永远不会完成。我必须按Ctrl + C才能停止它。

    Command Window

    我认为该服务可能已被卡住一些,所以我尝试使用sc delete卸载它然后重新启动该框,但这没有任何效果。启动时,所有三个服务都正常运行。

    在此更改之前,所有三项服务都可以正常工作和部署。当我将启动服务方法放回到给我带来麻烦的服务的主要方法时,它可以工作。

    之前有没有遇到过这个?有没有办法告诉命令等待它得到正确的响应?或者有没有办法获得更多细节,如果这里确实发生了错误?

0 个答案:

没有答案