Ho esaminato una serie di tutorial e domande SO (come Impostazioni app .Net Core ) per quanto riguarda la lettura di appsettings.json in .Net Core 3 e non riesco a trovare alcun suggerimento su come fare quando si tratta del servizio Worker. Non esiste un metodo di avvio. Invece, ho un Program.cs con il metodo principale:
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>();
});
}
Come posso leggere il file appsettings.json in un progetto di servizio di lavoro in .Net Core 3?
Ho aggiunto un riferimento a un client WCF personalizzato creato con .Net v4.8 e un altro progetto che ha condiviso tutti gli oggetti di dominio Busines tra l'intera soluzione. La mia soluzione è principalmente .Net v4.8 e desidero utilizzare il servizio di lavoro. Il progetto Client crea internamente un client WCF tramite codice, in modo che tutti i binding e gli endpoint siano configurabili. Se questo fosse un progetto .Net v4.8, aggiungerei quanto segue a app.config:
<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>
Ora ho bisogno che queste impostazioni siano nel nuovo formato JSON e le leggano.
modificare
Questo è un nuovo progetto. Il lavoratore non sta facendo nulla:
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);
}
}
}
Ed ecco come ottengo questo tipo di progetto: