Ich habe mir eine Reihe von Tutorials und SO-Fragen (z. B. App-Einstellungen .Net Core ) zum Lesen von appsettings.json in .Net Core 3 angesehen und kann beim Umgang mit dem Worker-Dienst keine Hinweise zur Vorgehensweise finden. Es gibt keine Startmethode. Stattdessen habe ich eine Program.cs mit der Hauptmethode:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
Wie lese ich aus der Datei appsettings.json in einem Worker Service-Projekt in .Net Core 3?
Ich habe einen Verweis auf einen benutzerdefinierten WCF-Client hinzugefügt, den ich mit .Net v4.8 erstellt habe, und auf ein anderes Projekt, bei dem nur das gesamte Busines-Domänenobjekt für die gesamte Lösung freigegeben ist. Meine Lösung ist in erster Linie .Net v4.8 und ich möchte den Worker Service verwenden. Das Client-Projekt erstellt einen WCF-Client intern per Code, sodass alle Bindungs- und Endpunkte konfigurierbar sind. Wenn dies ein .NET v4.8-Projekt wäre, würde ich der app.config Folgendes hinzufügen:
<appSettings>
...
<add key="AminServiceUri" value="http://localhost:45108/ServiceHost/v1/AminService.svc" />
<add key="BillServiceUri" value="http://localhost:45108/ServiceHost/v1/BillService.svc" />
<add key="CustomerServiceUri" value="http://localhost:45108/ServiceHost/v1/CustomerService.svc" />
<add key="EpayServiceUri" value="http://localhost:45108/ServiceHost/v1/EpayService.svc" />
<add key="FinanceServiceUri" value="http://localhost:45108/ServiceHost/v1/FinanceService.svc" />
<add key="GrpServiceUri" value="http://localhost:45108/ServiceHost/v1/GrpService.svc" />
<add key="MetaServiceUri" value="http://localhost:45108/ServiceHost/v1/MetaService.svc" />
<add key="ReportServiceUri" value="http://localhost:45108/ServiceHost/v1/ReportService.svc" />
<add key="ServiceInfoServiceUri" value="http://localhost:45108/ServiceHost/v1/ServiceInfoService.svc" />
<add key="UsersServiceUri" value="http://localhost:45108/ServiceHost/v1/UsersService.svc" />
...
<add key="ExcessiveLogging" value="false" />
...
</appSettings>
Jetzt müssen diese Einstellungen im neuen JSON-Format vorliegen und eingelesen werden.
Bearbeiten
Dies ist ein neues Projekt. Der Arbeiter tut nichts:
public class Worker : BackgroundService
{
private readonly ILogger<Worker> logger;
public Worker(ILogger<Worker> logger)
{
this.logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(5000, stoppingToken);
}
}
}
Und so bekomme ich diesen Projekttyp:
quelle
IConfiguration
anstatt eine benutzerdefinierte Klasse zu erstellen