新版的 configuration 项目还是适合了解和学习的。

注入

现在都是注入了,不再是 New ConfigurationBuilder() 了。

public class Startup{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
}

使用

  1. 直接使用

    Configuration.GetSection("ConnectionStrings")["DefaultConnection"]
    // 多级节点,使用 : 获取
    Configuration.GetSection("Level1")["Levle2:Level3:Level4"]
    // 数组,使用下表获取
    Configuration.GetSection("Level1")["Levle2:0:Level201"]
    Configuration.GetSection("Level1")["Levle2:2:Level221"]
  2. 映射对象

    // 注册
    services.Configure<AppConfigOptions>(Configuration.GetSection("AppConfig"));
    // 然后直接在构造函数中通过注入使用
    private readonly AppConfigOptions _appConfigOptions;
    public HomeController(IOptions<AppConfigOptions> optionsAccessor){
    _appConfigOptions = optionsAccessor.Value;
    }
  3. 自定义配置文件

    public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((builderContext, config) =>
    {
    config.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true);
    })
    .UseStartup<Startup>()
    .Build();
  4. 读取数据库里的配置

  5. 读取配置中心的配置