Ben .Net Core 3 appsettings.json okuma ile ilgili bir dizi öğretici ve SO soruları ( App Ayarları . Başlangıç yöntemi yoktur. Bunun yerine, ana yöntemle bir Program.cs var:
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'teki bir Çalışan Hizmet Projesi'nde appsettings.json dosyasından nasıl okuma yapabilirim?
Net v4.8 ile oluşturduğum özel bir WCF istemcisine ve tüm çözüm arasında paylaşılan tüm Busines Domain Object'e sahip başka bir projeye bir referans ekledim. Benim çözümüm öncelikle .Net v4.8 ve İşçi Hizmetini kullanmak istiyorum. İstemci projesi kodla dahili olarak bir WCF İstemcisi oluşturur, böylece tüm bağlama ve uç noktalar yapılandırılabilir. Bu bir .Net v4.8 projesi olsaydı, app.config dosyasına şunları eklerdim:
<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>
Şimdi bu ayarların yeni JSON biçiminde olması ve bunları okuması gerekiyor.
Düzenle
Bu yeni bir proje. İşçi hiçbir şey yapmıyor:
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);
}
}
}
İşte bu proje türünü nasıl alacağım: