首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TopShelf [Failure] Stop不能为空

TopShelf [Failure] Stop不能为空
EN

Stack Overflow用户
提问于 2015-10-07 13:43:02
回答 1查看 7.3K关注 0票数 3

.Net框架v4.0。

安装服务失败;

代码语言:javascript
复制
Topshelf.HostFactory Information: 0 : Configuration Result:
[Success] Name ZipPack
[Success] Description 9 Angle Zip Refresh
[Success] ServiceName ZipPack
Topshelf.HostConfigurators.HostConfiguratorImpl Information: 0 : Topshelf v3.2.150.0, .NET Framework v4.0.30319.42000
Topshelf.HostFactory Error: 0 : An exception occurred creating the host, Topshelf.HostConfigurationException: The service was not properly configured: 
[Failure] Stop must not be null
   at Topshelf.Configurators.ValidateConfigurationResult.CompileResults(IEnumerable`1 results)
   at Topshelf.ServiceExtensions.<>c__DisplayClasse`1.<CreateServiceBuilderFactory>b__d(HostSettings x)
   at Topshelf.HostConfigurators.HostConfiguratorImpl.CreateHost()
   at Topshelf.HostFactory.New(Action`1 configureCallback)
Topshelf.HostFactory Error: 0 : The service terminated abnormally, Topshelf.HostConfigurationException: The service was not properly configured: 
[Failure] Stop must not be null
   at Topshelf.Configurators.ValidateConfigurationResult.CompileResults(IEnumerable`1 results)
   at Topshelf.ServiceExtensions.<>c__DisplayClasse`1.<CreateServiceBuilderFactory>b__d(HostSettings x)
   at Topshelf.HostConfigurators.HostConfiguratorImpl.CreateHost()
   at Topshelf.HostFactory.New(Action`1 configureCallback)
   at Topshelf.HostFactory.Run(Action`1 configureCallback)

Program.cs看起来是这样的;

代码语言:javascript
复制
public static class Program
{
    public static void Main(string[] args)
    {
        HostFactory.Run(x =>
        {
            x.Service<ZipPackService>(s =>
            {
                s.ConstructUsing(name => new ZipPackService(new ServiceRepository(new FileHelper())));
                s.WhenStarted((tc, hostControl) => tc.Start(hostControl));
                s.WhenStarted((tc, hostControl) => tc.Stop(hostControl));
            });
            x.RunAsLocalSystem();
            x.StartAutomaticallyDelayed();
            x.SetDescription("9 Angle Zip Refresh");
            x.SetDisplayName("ZipPack");
            x.SetServiceName("ZipPack");
        });
    }
}

这是一个正在转换为服务的命令行程序。遵循Main()中入口点的Top大陆架手册示例。已经尝试过搜索引擎,但它们只是从Git返回源以获取错误信息。该服务继承自ServiceControl。

在服务中,Start()方法被定义为;

代码语言:javascript
复制
    public bool Start(HostControl hostControl)
    {
        PollProcess();
        return true;
    }

PollProcess()使用windows事件触发器来检测添加到目录中的文件。

缺少什么配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 07:57:41

您有两个whenStarted,而最后一个应该是whenStopped

代码语言:javascript
复制
 public static void Main(string[] args)
{
    HostFactory.Run(x =>
    {
        x.Service<ZipPackService>(s =>
        {
            s.ConstructUsing(name => new ZipPackService(new ServiceRepository(new FileHelper())));
            s.WhenStarted((tc, hostControl) => tc.Start(hostControl));
            s.WhenStopped((tc, hostControl) => tc.Stop(hostControl));
        });
        x.RunAsLocalSystem();
        x.StartAutomaticallyDelayed();
        x.SetDescription("9 Angle Zip Refresh");
        x.SetDisplayName("ZipPack");
        x.SetServiceName("ZipPack");
    });
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32993850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档