我正在编写一个基于TopShelf的简单 Windows 服务。如何将我的应用程序安装为服务?我试图执行SpyService.exe install
,但它不起作用。
接下来两种配置服务的方式有什么区别?
var cfg = RunnerConfigurator.New(
x =>
{
x.ConfigureService<SpyService>(s =>
{
s.Named("SpyService");
s.HowToBuildService(name => new SpyService());
s.WhenStarted(tc => {
XmlConfigurator.ConfigureAndWatch(new FileInfo(".\\log4net.config"));
tc.Start(); });
s.WhenStopped(tc => tc.Stop());
});
x.RunAsFromInteractive();
x.SetDescription("Сервис логирования действий пользователя.");
x.SetDisplayName("SpyService");
x.SetServiceName("SpyService");
});
Runner.Host(cfg, args);
和
var host = HostFactory.New(x =>
{
x.Service<SpyService>(s =>
{
s.SetServiceName("SpyService");
s.ConstructUsing(name => new SpyService());
s.WhenStarted(service =>
{
XmlConfigurator.ConfigureAndWatch(new FileInfo(".\\log4net.config"));
service.Start();
});
s.WhenStopped(service => service.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("Сервис логирования действий пользователя.");
x.SetDisplayName("SpyService");
x.SetServiceName("SpyService");
});
host.Run();
我注意到,如果我使用第二种方法,则服务已成功安装,但无法x.RunAsFromInteractive()
像第一种方法那样启动服务。