3

我有一个搁置的Topshelf服务在它应该启动的时候没有启动的问题:即使货架文件夹发生了变化,并且 Topshelf 注意到了这一点,该服务也没有启动。没有显示错误消息(实际上根本没有日志消息),我真的不知道从哪里开始寻找问题。

这就是我所拥有的:

  • 我在日志中验证了 Topshelf 注意到文件夹中的更改C:\Topshelf.Host\Services\MyService\

  • 我已验证 Topshelf 架子文件夹中的文件名是MyAssembly.dllMyAssembly.config. MyAssembly并且MyService是相同的,即使在大小写上也匹配。

  • 我的配置文件中有以下内容:

    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      <section name="ShelfConfiguration" type="Topshelf.Shelving.ShelfConfiguration, TopShelf" />
    </configSections>
    
    <ShelfConfiguration Bootstrapper="MyNamespace.MyBootstrapper, MyAssembly" />
    
    ...
    
  • 我有以下课程MyAssembly.dll

    namespace MyNamespace
    {
        public class MyBootstrapper : Bootstrapper<MyService>
        {
            public void InitializeHostedService(IServiceConfigurator<MyService> cfg)
            {
                cfg.HowToBuildService(name => new MyService());
                cfg.WhenStarted(s => s.StartService());
                cfg.WhenStopped(s => s.StopService());
            }
        }
    
    
        public class MyService
        {
            public void StartService()
            { 
                ...
            }
            public void StopService()
            { 
                ...
            }
        }
    }
    
4

1 回答 1

3

事实证明,我在问题中包含的所有内容确实设置正确,但是我在配置文件的其他地方有拼写错误,这在加载我的服务时给 Topshelf 带来了麻烦。当我纠正这些时,一切都按预期工作。

我要结束这个问题,因为问题并不真正在这里。

于 2011-06-27T12:21:55.397 回答