J'ai examiné un certain nombre de didacticiels et de questions SO (tels que Paramètres d'application .Net Core ) concernant la lecture de appsettings.json dans .Net Core 3 et je ne trouve aucun pointeur sur la façon de traiter avec le service Worker. Il n'y a pas de méthode de démarrage. Au lieu de cela, j'ai un Program.cs avec la méthode 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>();
});
}
Comment puis-je lire le fichier appsettings.json dans un projet de service de travail dans .Net Core 3?
J'ai ajouté une référence à un client WCF personnalisé que j'ai créé avec .Net v4.8 et un autre projet qui a juste tout l'objet de domaine Busines partagé entre la solution entière. Ma solution est principalement .Net v4.8 et je souhaite utiliser le Worker Service. Le projet Client crée un client WCF en interne par code afin que toutes les liaisons et tous les points de terminaison soient configurables. S'il s'agissait d'un projet .Net v4.8, j'ajouterais ce qui suit à 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>
Maintenant, j'ai besoin que ces paramètres soient au nouveau format JSON et les lisent.
Éditer
Ceci est un nouveau projet. Le travailleur ne fait rien:
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);
}
}
}
Et voici comment j'obtiens ce type de projet:
la source
IConfiguration
au lieu de créer une classe personnalisée