实际在ASP.NET Core的ConfigureServices阶段读取AppSettings [英] Actually read AppSettings in ConfigureServices phase in ASP.NET Core
问题描述
我需要在ASP.NET Core 1.0 Web应用程序的ConfigureServices
方法中设置一些依赖项(服务).
I need to setup a few dependencies (services) in the ConfigureServices
method in an ASP.NET Core 1.0 web application.
问题是,基于新的JSON配置,我需要设置服务或其他服务.
The issue is that based on the new JSON configuration I need to setup a service or another.
在应用生存期的ConfigureServices
阶段,我似乎无法真正读取设置:
I can't seem to actually read the settings in the ConfigureServices
phase of the app lifetime:
public void ConfigureServices(IServiceCollection services)
{
var section = Configuration.GetSection("MySettings"); // this does not actually hold the settings
services.Configure<MySettingsClass>(section); // this is a setup instruction, I can't actually get a MySettingsClass instance with the settings
// ...
// set up services
services.AddSingleton(typeof(ISomething), typeof(ConcreteSomething));
}
我实际上需要阅读该部分,并确定要为ISomething
注册的内容(可能与ConcreteSomething
不同).
I would need to actually read that section and decide what to register for ISomething
(maybe a different type than ConcreteSomething
).
推荐答案
这是从appSettings.json
方法中直接从appSettings.json
获取类型设置的方法:
That is the way you can get the typed settings from appSettings.json
right in ConfigureServices
method:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MySettings>(Configuration.GetSection(nameof(MySettings)));
services.AddSingleton(Configuration);
// ...
var settings = Configuration.GetSection(nameof(MySettings)).Get<MySettings>();
int maxNumberOfSomething = settings.MaxNumberOfSomething;
// ...
}
// ...
}
这篇关于实际在ASP.NET Core的ConfigureServices阶段读取AppSettings的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!