ale*_*o73 7 configuration worker .net-core
有关使用配置的所有信息都从创建构建器开始,
var builder = WebApplication.CreateBuilder(args);
Run Code Online (Sandbox Code Playgroud)
随后使用
builder.Configuration.
Run Code Online (Sandbox Code Playgroud)
配置,但在 Worker services WebApplication 中不可用。
如何在 Microsoft.NET.Sdk.Worker 类型的项目中使用配置?
Amr*_*rhy 14
这是通过访问 HostBuilderContext
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
IConfiguration configuration = hostContext.Configuration;
services.Configure<RabbitMQConfiguration>(configuration.GetSection(nameof(RabbitMQConfiguration)));
services.AddHostedService<Worker>();
});
Run Code Online (Sandbox Code Playgroud)
首先,您应该添加ConfigureAppConfiguration何时CreateHostBuilder
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
})
.ConfigureAppConfiguration((hostContext, configBuilder) =>
{
configBuilder
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
.Build();
});
Run Code Online (Sandbox Code Playgroud)
然后,在appsettings中添加配置。你的环境.json
"worker": {
"id": 12345,
"name": "SimpleWorker",
"delay": 1000
}
Run Code Online (Sandbox Code Playgroud)
添加IConfiguration构造Worker函数并使用它。
类的完整示例Worker:
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly IConfiguration _configuration;
public Worker(ILogger<Worker> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var workerConfig = _configuration.GetSection("worker").Get<SimpleWorkerConfig>();
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker {id}:{name} running at: {time} with delay {delay}",
workerConfig.Id, workerConfig.Name, DateTimeOffset.Now, workerConfig.Delay);
await Task.Delay(workerConfig.Delay, stoppingToken);
}
}
}
public class SimpleWorkerConfig
{
public int Id { get; set; }
public string Name { get; set; }
public int Delay { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11830 次 |
| 最近记录: |