配置是应用程序发布到各种环境的必备能力。.net core框架本身集成了强大的配置功能,支持多种配置源数据读写。
经常使用的nuget包
Microsoft.Extensions.Configuration.Abstractions //抽象包
Microsoft.Extensions.Configuration //实现包
Microsoft.Extensions.Configuration.Binder //强类型绑定
Microsoft.Extensions.Configuration.Json //配置Json文件
Microsoft.Extensions.Primitives //配置验证
Microsoft.Extensions.Options //配置选项
框架核心接口
IConfigurationBuilder //建造者接口 IConfigurationRoot //配置根 IConfigurationSource //配置源接口 IConfigurationProvider //配置提供程序接口
配置框架应用了建造者模式,我们需要将配置源提交给建造者,通过建造者接口提供的build方法,创建IConfigurationRoot实例,它的配置文件的根,我们可以通过IConfigurationRoot实例访问到配置文件。通过实现IConfigurationSource ,IConfigurationProvider
两个接口,我们也可以在框架中添加自定义的配置源。
Web Api项目的简单实例
在appsettings.json中设置配置文件
{ "key1": "nihao", "section1": { "key1": [ "1", "2" ], "key2":4 } }
构造函数中添加IConfiguration接口,并使用_configuration读取配置
private readonly IConfiguration _configuration; public WeatherForecastController(IConfiguration configuration) { _configuration = configuration; } [HttpGet] public string Get() { Console.WriteLine(_configuration["key1"]); //读取配置 Console.WriteLine(_configuration.GetSection("section1")["key2"]); return "OK"; }
因为ASP.NET Core框架已经默认添加了appsettings.json的配置源,所以我们直接使用IConfiguration接口就可以读取到其中的配置,如果我们需要添加新的配置文件则需要手动添加(注意:后添加的配置源,会覆盖掉与前面配置源相同key的value值。)
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(builder => { builder.AddJsonFile("dbsettings.json", false, true); //添加新的配置源 }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
控制台程序实例
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddJsonFile("appsettings.json", false, true); var iconfigurationRoot = configurationBuilder.Build(); Console.WriteLine($"key1 {iconfigurationRoot["key1"]}");