Topshelf未击中OnStart方法

时间:2016-02-12 16:28:36

标签: c# topshelf

我正在尝试构建我的第一个基于topshelf的服务。我试图在快速启动http://docs.topshelf-project.com/en/latest/configuration/quickstart.html

中遵循该模式
    static void Main(string[] args)
    {
        var h =  HostFactory.Run(x =>
                            {
                                ConfHost(x);
                            });
    }

    private static void ConfHost (Topshelf.HostConfigurators.HostConfigurator x  )
    {
        x.Service<JobRunner>(s =>
        {
            ConfService(s);
        });
        x.RunAsLocalSystem();
        x.StartAutomatically();
        x.SetDescription("topshelf thing");
        x.SetDisplayName("displayname ");
        x.SetServiceName("svc name");
    }

    private static void ConfService(ServiceConfigurator<JobRunner> s)
    {
        s.ConstructUsing(name => new JobRunner());
        s.WhenStarted(bt => bt.OnStart());
        s.WhenStopped(bt => bt.OnStop());
    }

这段代码直接运行并终止,即使我在第一行放置了一个断点,也没有在JobRunner上遇到Onstart方法。

2 个答案:

答案 0 :(得分:1)

希望其他人可以从我的错误中吸取教训,控制台输出实际上给出了你需要仔细检查或者在最后放置一个Console.Read()以查看它的原因

  

ConfigurationException:未正确配置服务:   [失败]名称不得包含空格,&#39; /&#39;或者&#39; \&#39;字符

答案 1 :(得分:-1)

Windows确实支持服务名称中的空格:

x.SetDisplayName(&#34; displayname&#34;); //这是空格

将其更改为其他没有空格的值,并且必须正常工作......