我正在尝试构建我的第一个基于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方法。
答案 0 :(得分:1)
希望其他人可以从我的错误中吸取教训,控制台输出实际上给出了你需要仔细检查或者在最后放置一个Console.Read()以查看它的原因
ConfigurationException:未正确配置服务: [失败]名称不得包含空格,&#39; /&#39;或者&#39; \&#39;字符
答案 1 :(得分:-1)
Windows确实支持服务名称中的空格:
x.SetDisplayName(&#34; displayname&#34;); //这是空格
将其更改为其他没有空格的值,并且必须正常工作......