在.Net 6 Worker服务中使用appsettings.json



我想添加一个依赖于appsettings的单例服务吗。

在.Net 6工作者服务启动时,我该如何做到这一点?

using AutoMapper;
var mapperConfig = new MapperConfiguration(mc =>
{
mc.AddProfile(new MappingProfile());
});
IMapper mapper = mapperConfig.CreateMapper();
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
services.AddSingleton(mapper);
services.AddSingleton<IOrderNumberGenerator, OrderNumberGenerator>();
services.AddSingleton(new ServiceIwantToCall(<--I need too use apsettings here-->));
})
.Build();
await host.RunAsync();

目前您正在尝试注册ServiceIwantToCall的实例。相反,您可以注册一个工厂方法来解析一个,一旦解析,它将成为一个singleton。例如,这个匿名方法:

services.AddSingleton(serviceProvider => { 
// resolve the configuration provider from the container
IConfiguration config = serviceProvider.GetRequiredService<IConfiguration>();
// get the config value and instantiate a ServiceIwantToCall
// return the instantiated service
string someValue = config["myValueKey"];
return new ServiceIwantToCall(someValue);
});

最新更新