У меня возникают трудности с запуском службы с использованием следующей настройки.
static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.RegisterModule<FixAcceptorModule>();
var container = builder.Build();
var rc = HostFactory.Run(c =>
{
c.UseAutofacContainer(container);
c.Service<IServiceManager>(svc =>
{
svc.ConstructUsingAutofacContainer();
svc.WhenStarted(sm => sm.Start()).BeforeStartingService(a => a.RequestAdditionalTime(TimeSpan.FromSeconds(30)));
svc.WhenStopped(sm => sm.Stop());
});
c.SetDescription("");
c.SetDisplayName("FIX Acceptor Service");
c.SetServiceName("FixAcceptorSvc");
c.RunAsLocalService();
c.StartManually();
});
}
Это результат запуска действия myservice.exe start
:
Topshelf.Hosts.StartHost Error: 0 : The service failed to start., System.InvalidOperationException: Cannot start service FixAcceptorSvc on computer '.'. ---> System.ComponentModel.Win32Exception: The service did not respond to the start or control request in a timely fashion
--- End of inner exception stack trace ---
at System.ServiceProcess.ServiceController.Start(String[] args)
at System.ServiceProcess.ServiceController.Start()
at Topshelf.Runtime.Windows.WindowsHostEnvironment.StartService(String serviceName, TimeSpan startTimeOut)
at Topshelf.Hosts.StartHost.Run()
Хотя исключение указывает на тайм-аут, я не думаю, что это связано с проблемой синхронизации, поскольку это исключение возникает немедленно. Я думаю, это больше похоже на проблему с разрешением или конфигурацией.
На что следует обратить внимание:
- Моя машина разработчика присоединена к домену и работает
Windows 10 Pro - 1909
- При запуске сервиса из Visual Studio 2019 в конфигурации отладки все работает отлично
myservice.exe install --localservice
(иc.RunAsLocalSystem()
вHostFactory
) => тот же результатmyservice.exe install --localsystem
(иc.RunAsLocalSystem()
вHostFactory
) => тот же результат- Также использование
myservice.exe install -username myaduser -password myadpassword
не помогло (двойная проверка групповых политик и того, что моему пользователю разрешен вход в систему в качестве службы)
Так что я делаю неправильно здесь?
Start()
илиStop()
? - person Pavel Anikhouski   schedule 04.06.2020