📅  最后修改于: 2022-03-11 14:48:53.747000             🧑  作者: Mango
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();
services.AddSingleton(options);
services.AddHostedService();
});
}
public class Worker : BackgroundService {
private readonly ILogger logger;
private readonly WorkerOptions options;
public Worker(ILogger 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);
}
}
}
public class WorkerOptions {
public string AminServiceUri { get; set; }
public string BillServiceUri { get; set; }
//... other properties
}
//File 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
}
}