顶部搁板未命中 OnStart 方法

本文关键字:OnStart 方法 顶部 | 更新日期: 2023-09-27 18:34:19

我正在尝试构建我的第一个基于顶级的服务。我正在尝试遵循快速入门 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 方法,即使我在第一行放置了一个断点也是如此。

顶部搁板未命中 OnStart 方法

希望其他人能从我的错误中吸取教训,控制台输出实际上给出了您需要仔细执行的原因,或者在末尾放置 Console.Read() 才能看到它

配置异常:服务配置不正确: [失败]名称不得包含空格、"/"或"''"字符

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

x.SetDisplayName("displayname");这里是空间

将其更改为另一个不带空格的值,并且必须工作...