这不是this post的副本,因为我已经在其中尝试了推荐的解决方案。
我一直在尝试将C#/。netCore 3.0 / Kestrel作为服务启动。
[努力使我的应用程序作为服务启动后,我按照这些instructions创建了一个新的exe,结果相同。
发布,添加服务并尝试从cmd,powershell或服务接口启动服务后,系统提示我以下消息:
Windows无法在本地计算机上启动SomeWorker服务。错误1053:服务未响应启动或控制及时提出要求。
在调查系统事件日志时,我只看到一个通用的:
myWorker服务由于以下错误而无法启动:服务未及时响应启动或控制请求。
当我运行exe /控制台时,它可以正常启动,没有任何问题。
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);
}
}
}
问题是未将Visual Studio设置为自包含地部署服务。
在项目的属性中设置完之后,一切正常。