Я переглянув декілька навчальних посібників та запитань щодо SO (наприклад, Налаштування додатків. Net Core ) щодо читання appsettings.json в .Net Core 3, і не можу знайти жодних вказівників щодо того, як користуватися службою Worker. Не існує методу запуску. Натомість у мене є 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>();
});
}
Як я можу прочитати з файлу appsettings.json у проекті Worker Service в .Net Core 3?
Я додав посилання на користувальницький клієнт WCF, який я створив за допомогою .Net v4.8, та інший проект, у якому всі об’єкти домену Busines поділяються між усім рішенням. Моє рішення - це насамперед .Net v4.8, і я хочу скористатися службою Worker. Клієнтський проект створює Клієнт 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);
}
}
}
Ось як я отримую цей тип проекту: