IOptions 读取配置文件

时间 2018/4/2 22:25:04 加载中...

通过IOptions来读取配置文件


绑定到实体类


我们假设 appsettings.json 内容如下:


{
  "Name": "abc1234567890",
  "ConnectionStrings": "23"
}


新建一个 Settings 实体类


    public class Settings
    {
        public string Name { get; set; }
        public string ConnectionStrings { get; set; }
    }


在 Startup.cs 文件的 ConfigureServices 方法中将配置绑定到实体类。


//将配置文件绑定到一个 TOptions 实例
services.Configure<Settings>(Configuration);


获取配置


方式一:在控制器的构造函数中,我们可以通过DI来获取


public DefaultController(IOptions<Settings> options)
{
    this._settings = options.Value;
}


方式二:在页面中直接使用@inject


@using Microsoft.Extensions.Options
@inject IOptions<WebApplication2.Settings> settings

<h2>@settings.Value.Name</h2>


配置热更新


将 IOptions 修改为 IOptionsSnapshot 类即可实现热更新 


.net core web 默认使用热更新

是由于 Program.cs 中  WebHost.CreateDefaultBuilder(args) 设置的。


在 https://github.com/aspnet/MetaPackages/blob/dev/src/Microsoft.AspNetCore/WebHost.cs 中可以看到 CreateDefaultBuilder 的源码。


config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)    
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);


他设置了 reloadOnChange=true


当然,我们也可以重新设定

WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration(config =>
    {
        config.AddJsonFile("appsettings.json", true, false);
    })
    .UseStartup<Startup>()
    .Build();


版权说明
作者:SQBER
文章来源:http://sqber.com/articles/ioptions-config.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。