.Net Core 3でappsettings.jsonを読むことに関するチュートリアルとSOの質問(App Settings .Net Coreなど)をいくつか見てきましたが、Workerサービスを処理するときのハウツーに関するポインターが見つかりません。スタートアップメソッドはありません。代わりに、mainメソッドを含むProgram.csがあります。
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>();
});
}
.Net Core 3のワーカーサービスプロジェクトのappsettings.jsonファイルから読み取るにはどうすればよいですか?
.Net v4.8で作成したカスタムWCFクライアントへの参照と、すべてのビジネスドメインオブジェクトのみをソリューション全体で共有する別のプロジェクトへの参照を追加しました。私のソリューションは主に.Net v4.8であり、ワーカーサービスを使用したいと考えています。クライアントプロジェクトは、コードによって内部的にWCFクライアントを作成するため、すべてのバインディングとエンドポイントを構成できます。これが.Net v4.8プロジェクトである場合、以下を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>
次に、これらの設定を新しいJSON形式にして、読み込む必要があります。
編集する
これは新鮮なプロジェクトです。ワーカーは何もしていません:
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);
}
}
}
そして、これが私がこのプロジェクトタイプを取得する方法です: