内存中配置调用AddInMemoryCollection(),其余和Json配置一样。
var dict = new Dictionary<string, string> { {"AppId","12345"}, {"Logging:IncludeScopes","false"}, {"Logging:LogLevel:Default","Debug"}, {"Logging:LogLevel:System","Information"}, {"Logging:LogLevel:Microsoft","Information"}, {"GrantTypes:0:Name","authorization_code"}, {"GrantTypes:1:Name","password"}, {"GrantTypes:2:Name","client_credentials"} }; var builder = new ConfigurationBuilder() .AddInMemoryCollection(dict);或
var builder = new ConfigurationBuilder() .AddInMemoryCollection(); Configuration["AppId"] = "12345"; 命令行参数配置命令行参数配置需要安装Microsoft.Extensions.Configuration.CommandLine包。
调用AddCommandLine()扩展方法将命令行配置Provider添加到ConfigurationBuilder中。
var builder = new ConfigurationBuilder() .AddCommandLine(args);传递参数有两种形式
dotnet run /AppId=12345
或
dotnet run --AppId 12345
如果为--AppId提供一个缩写的参数-a,那么执行dotnet run -a 12345会报在switch mappings中没有-a定义的错误。
幸好AddCommandLine还有一个重载,可以传一个switch mapping。
var builder = new ConfigurationBuilder() .AddCommandLine(args, new Dictionary<string, string> { {"-a","AppId"} });这样再运行下面的命令就不会报错了。
dotnet run -a 12345
环境变量配置环境变量配置需要安装Microsoft.Extensions.Configuration.EnvironmentVariables包。
调用AddEnvironmentVariables()扩展方法将环境变量配置Provider添加到ConfigurationBuilder中。
var builder = new ConfigurationBuilder() .AddEnvironmentVariables();获取所有的环境变量
Environment.GetEnvironmentVariables();根据名称获取环境变量
Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); 自定义配置Provider自定义配置Provider需要继承IConfigurationSource实现自己的配置源,以及继承ConfigurationProvider,重写Load方法。
关于自定义配置Provider,我写了两个开源包,Cxlt.Extensions.Configuration.EF和Cxlt.Extensions.Configuration.Yaml,通过这两个项目,我会详细讲解如何实现自己的配置Provider。文章《实现自己的.NET Core配置Provider之EF》和《实现自己的.NET Core配置Provider之Yaml》过几天也会发布。
配置Provider顺序.NET Core的配置API允许同时使用多个配置Provider。
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("configs/appsettings.json") .AddXmlFile("configs/appsettings.xml") .AddCommandLine(args) .AddEnvironmentVariables();如果两个Provider都有相同的配置,那么添加Provider的顺序就非常重要了,因为后加入的会覆盖前面的。
另外建议环境变量的配置Provider放到最后。
最后.NET Core的配置是很基础的内容,学起来自然不难,基本上动手实践一遍就能掌握。越是简单的东西,在日后的开发中可能帮你节约很多时间。希望这篇文章对你有帮助,请点赞支持一下,也欢迎关注“chengxulvtu"公众号,提前获取新文章。