HTML5技术

10分钟就能学会的.NET Core配置 - BobTian(2)

字号+ 作者:H5之家 来源:H5之家 2017-06-28 10:00 我要评论( )

内存中配置调用AddInMemoryCollection(),其余和Json配置一样。 var dict = new Dictionarystring, string{{AppId,12345},{Logging:IncludeScopes,false},{Logging:LogLevel:Default,Debug},{Logging:LogLevel:Syst

内存中配置调用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"公众号,提前获取新文章。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 工作4年之后对人性、社会的疯言 - Arik lee

    工作4年之后对人性、社会的疯言 - Arik lee

    2015-12-25 14:29

  • 跟我一起写操作系统(一)——10分钟写个操作系统 - lucasysfeng

    跟我一起写操作系统(一)——10分钟写个操作系统 - lucasysfeng

    2015-09-30 11:00

网友点评
m