配置文件如下
- {
- "Logging": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "AllowedHosts": "*",
- "webSetting": {
- "WebName": "ASP.NET Core",
- "Title": "Hello Title",
- "Behavior": {
- "IsCheckIp": true,
- "MaxConnection": 300
- }
- }
- }
方法一, 键读取
首先, 在类构造函数注入 IConfiguration, 例如:
- public IConfiguration Configuration { get; }
- public ValuesController(IConfiguration configuration)
- {
- Configuration = configuration;
- }
然后就可以在该类任何方法读取:
- [HttpGet]
- public ActionResult<IEnumerable<string>> Get()
- {
- var title = Configuration["WebSetting:Title"];
- var isCheckIp = Configuration["WebSetting:Behavior:IsCheckIp"];
- return new string[] { title, isCheckIp };
- }
方法二, 绑定读取
首先, 还是类构造函数注入 ICofiguration
- public IConfiguration Configuration { get; }
- public ValuesController(IConfiguration configuration)
- {
- Configuration = configuration;
- }
然后, 创建配置项结构对应的配置模型
- public class Behavior
- {
- public bool IsCheckIp { get; set; }
- public int MaxConnection { get; set; }
- }
- public class WebSetting
- {
- public string WebName { get; set; }
- public string Title { get; set; }
- public Behavior Behavior { get; set; }
- }
最后如下方式读取配置
- [HttpGet]
- public ActionResult<IEnumerable<string>> Get()
- {
- var webSetting = new WebSetting();
- Configuration.GetSection("WebSetting").Bind(webSetting);
- var webName = webSetting.WebName;
- var isCheckIp = webSetting.Behavior.IsCheckIp;
- return new string[] { webName, isCheckIp.ToString() };
- }
方法三, 注册读取
首先, 创建配置项结构对应的配置模型
- public class Behavior
- {
- public bool IsCheckIp { get; set; }
- public int MaxConnection { get; set; }
- }
- public class WebSetting
- {
- public string WebName { get; set; }
- public string Title { get; set; }
- public Behavior Behavior { get; set; }
- }
然后, 在 ConfigureServices 方法中注册
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
- // 注册配置
- services.Configure<WebSetting>(Configuration.GetSection("WebSetting"));
- }
最后读取配置: 在读取配置的类构造函数注入 IOptions, 就可以在该类任何位置读取配置如下
1, 构造函数注入读取
- private IOptions<WebSetting> webSettingOption;
- // 构造函数
- public ValuesController(IOptions<WebSetting> _webSettingOption)
- {
- webSettingOption = _webSettingOption;
- }
- [HttpGet]
- public ActionResult<IEnumerable<string>> Get()
- {
- var webName = webSettingOption.Value.WebName;
- var isCheckIp = webSettingOption.Value.Behavior.IsCheckIp;
- return new string[] { webName, isCheckIp.ToString() };
- }
来源: http://www.bubuko.com/infodetail-3345980.html