Если, например, рабочему классу необходим доступ к некоторым данным, хранящимся в ваших настройках приложения
public class Worker : BackgroundService {
private readonly ILogger<Worker> logger;
private readonly WorkerOptions options;
public Worker(ILogger<Worker> logger, WorkerOptions options) {
this.logger = logger;
this.options = options;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
while (!stoppingToken.IsCancellationRequested) {
//do something that uses options
logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(5000, stoppingToken);
}
}
}
Где WorkerOptions
хранит ваши значения из конфигурации.
public class WorkerOptions {
public string AminServiceUri { get; set; }
public string BillServiceUri { get; set; }
//... other properties
}
Что предполагает *Файл 1008 * appsettings.json имеет соответствующие ключи
{
"WCF": {
"AminServiceUri":"http://localhost:45108/ServiceHost/v1/AminService.svc",
"BillServiceUri":"http://localhost:45108/ServiceHost/v1/BillService.svc",
//...other key-value pairs
},
"Logging": {
"ExcessiveLogging": false
}
}
По умолчанию Host.CreateDefaultBuilder
настроит обычную конфигурацию (appsettings.json и др.).
Использование hostContext.Configuration
чтобы получить экземпляр IConfiguration
, который можно использовать для доступа к нужным настройкам, и добавить для него строго типизированную объектную модель. Добавьте этот объект в коллекцию сервисов, чтобы его можно было внедрить в случае необходимости
Например,
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) => {
IConfiguration configuration = hostContext.Configuration;
WorkerOptions options = configuration.GetSection("WCF").Get<WorkerOptions>();
services.AddSingleton(options);
services.AddHostedService<Worker>();
});
}
Когда создается работник, ему будут указаны необходимые зависимости.
Ссылка Конфигурация в ASP.NET Core