C# 服务未启动
这不是的重复,因为我已经尝试了推荐的解决方案 我一直在尝试启动我的C/.netCore 3.0/Kestrel作为一项服务 在努力让我的应用程序作为服务启动后,我按照这些命令创建了一个新的exe,结果也是一样的 发布、添加服务并尝试从cmd、powershell或服务接口启动服务后,系统会提示我以下消息: Windows无法在本地计算机上启动SomeWorker服务。 错误1053:服务未响应启动或控制 及时提出请求 在调查系统事件日志时,我只看到一个通用的: 由于以下错误,myWorker服务无法启动: 服务未及时响应启动或控制请求 当我运行exe/控制台时,它可以正常启动,没有任何问题C# 服务未启动,c#,service,core,kestrel,C#,Service,Core,Kestrel,这不是的重复,因为我已经尝试了推荐的解决方案 我一直在尝试启动我的C/.netCore 3.0/Kestrel作为一项服务 在努力让我的应用程序作为服务启动后,我按照这些命令创建了一个新的exe,结果也是一样的 发布、添加服务并尝试从cmd、powershell或服务接口启动服务后,系统会提示我以下消息: Windows无法在本地计算机上启动SomeWorker服务。 错误1053:服务未响应启动或控制 及时提出请求 在调查系统事件日志时,我只看到一个通用的: 由于以下错误,myWorker服务
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);
}
}
}
问题是VisualStudio没有设置为将服务部署为自包含的
在项目属性中设置此选项后,一切正常。不确定这是否有帮助,我遇到了相同的问题。在我的CreateHostBuilder方法中可以归结为:
host.ConfigureAppConfiguration(
(hostContext, config) =>
{
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", false, true);
}
);
事实证明,由于调用CreateDefaultBuilder将设置基本路径并添加appsettings.json,因此不再需要上述内容。以下是我的CreateHostBuilder现在的外观,它工作正常:
var host = Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureLogging(loggingBuilder =>
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
loggingBuilder.AddSerilog(logger, dispose: true);
})
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<SrtLmcoMaximoSyncWorker>();
});
return host;
基本上,windows service OnStart事件应该在30秒内完成。我不确定它在.NET核心世界是否仍然适用。你在创业期间做了一些繁重的工作吗?@Thangadurai。一点也不。这也是我的第一本能。我在解决方案中拥有的一切,都是您在上面的代码中看到的。我甚至尝试过通过regedit增加超时,但仍然收到相同的结果。您是否尝试过在某个地方添加System.Diagnostic.Debugger.Break调用,以查看调试会话启动时是否可以继续?我尝试了与您发布的相同的示例。我没有更改任何内容,但它对我有效,我可以在事件查看器中查看日志消息。您能检查您的服务创建/运行的是哪个用户帐户或服务帐户吗?您是如何使该服务成为独立的?@franva我现在记不起确切的方式,而且我附近没有visual studio可供检查,但当您右键单击“发布”时,应该有一个选项来设置一个独立的.net核心发布。我正在使用VS2019。单击发布后,有4个选项:Azure、Docker、文件夹和导入配置文件。我想我需要一些挖掘。谢谢:@Franva:use Folder,然后点击编辑按钮来配置配置文件。嗨@Sebastian我解决了我的问题。我错过了两件事。1.使用Windows服务,2。安装nuget软件包。我在微软文档网站上找到了这两个。