【发布时间】:2020-04-27 23:08:55
【问题描述】:
这不是 this post 的重复,因为我已经尝试了那里推荐的解决方案。
我一直在尝试将我的 C#/.netCore 3.0/Kestrel 作为服务启动。
在努力让我的应用程序作为服务启动后,我按照这些instructions 创建了一个新的 exe,结果相同。
发布、添加服务并尝试从 cmd、powershell 或服务接口启动服务后,系统会提示我以下消息:
Windows 无法在本地计算机上启动 SomeWorker 服务。 错误 1053:服务没有响应启动或控制 及时提出要求。
在调查系统事件日志时,我只看到一个通用的:
由于以下错误,myWorker 服务无法启动: 服务没有及时响应启动或控制请求。
当我运行 exe/console 时,它可以正常启动,没有任何问题。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(
options => options.AddFilter<EventLogLoggerProvider>(level => level >= LogLevel.Information))
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>()
.Configure<EventLogSettings>(config =>
{
config.LogName = "Sample Service";
config.SourceName = "Sample Service Source";
});
}).UseWindowsService();
}
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
【问题讨论】:
-
基本上,windows 服务的 OnStart 事件应该在 30 秒内完成。我不确定它在 .NET Core 世界中是否仍然适用。您在启动期间是否在做一些繁重的工作?
-
@Thangadurai。一点也不。这也是我的第一直觉。我在解决方案中的所有内容都是您在上面的代码中看到的。我什至尝试通过 regedit 增加超时时间,但仍然收到相同的结果。
-
您是否尝试过在某处添加
System.Diagnostic.Debugger.Break调用以查看是否可以在调试会话开始时进行? -
我尝试了您发布的相同示例。我没有改变任何东西,但它对我有用,我可以在事件查看器中看到日志消息。您可以检查您的服务是在哪个用户帐户或服务帐户上创建/运行的吗?
标签: c# .net-core service kestrel