ich mache meine ersten Schritte mit .Net 6 und versuche einen Dienst mit Hilfe von BackgroundService zu erstellen. Die Grundlagen sind von Microsoft relativ gut beschrieben, aber eine Sache will mir nicht gelingen: Das Abrufen von Parametern im Worker Service.
In meinem Beispiel würde ich gerne die Parameter der Kommandozeile abrufen. Diese stehen auch im Worker in "Configuration" zur Verfügung, ich weiß aber nicht, wie ich den Wert programmtechnisch abrufen muss.
using BackgroundServiceTest;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();
await host.RunAsync();
namespace BackgroundServiceTest
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> Logger;
public Worker(ILogger<Worker> logger, IConfiguration configuration)
{
Logger = logger;
Configuration = configuration;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
}
Unten sieht man in [4] die Parameter der Kommandozeile (hier nur ein Stück). Nun komme ich programmtechnisch nicht auf den Wert.
Name Wert
Configuration {Microsoft.Extensions.Configuration.ConfigurationRoot}
◢ Providers Count = 5
▶ [0] {Microsoft.Extensions.Configuration.ChainedConfigurationProvider}
▶ [1] {JsonConfigurationProvider for 'appsettings.json' (Optional)}
▶ [2] {JsonConfigurationProvider for 'appsettings.Development.json' (Optional)}
▶ [3] {EnvironmentVariablesConfigurationProvider Prefix: ''}
◢ [4] {CommandLineConfigurationProvider}
◢ Args {string[1]}
[0] "C:\\Daten\\Visual Studio\\Projects\\Tests\\.Net 6\\WorkerService\\Datei.txt"
▶ Data Count = 0
▶ Nicht öffentliche Member
▶ Rohdatenansicht
▶ Nicht öffentliche Member
Klar kann ich die Kommandozeile anders ermitteln, aber die Frage gilt auch für andere mit
.ConfigureAppConfiguration(app =>
{
...
})
Es wäre super, wenn jemand mir einen Tipp geben könnte.
Schönen Dank und LG