五种读取方式
- 五种读取方式依赖于 IConfiguration 和 IConfigurationRoot 对象
一、初级写法
//不区分大小写
string connectionString = _configuration["ConnectionString"];
二、绑定配置模型
var config = new Config01(); _configuration.Bind(config);
三、部分绑定
// webSetting为config的子对象
var webSetting = new WebSetting(); _configuration.GetSection("WebSetting").Bind(webSetting);
四、注册配置选项的服务
services.Configure<Config01>(_configuration);
注册完成后,在其他地方就可以通过依赖注入的方式使用了。通过一个 Options<xxx> 对象获取配置
在通过opt.Value.xxx的方式就可以拿到配置的选项
五、通过IConfigurationRoot读取自定义配置文件(appsettings.json为系统默认的)
先获取IConfigurationRoot对象,剩下的操作同前四。
未解之谜
如果读取不同环境的配置文件??????
即对 appsettings.Development.json 、 appsettings.Production.json 的读取
已知默认情况下Development与Production的优先级均大于appsettings.json。根据这个特性可以将公共配置存储在appsettings.json
- 开发环境可通过修改环境变量
- 生产环境通过修改Web.Config
<aspNetCore processPath="dotnet" arguments=".\FanjqOneSln.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" > <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore>
或者在发布前修改FolderProfile.pubxml文件
<PropertyGroup> <EnvironmentName>Development</EnvironmentName> </PropertyGroup>
按照读取自定义配置文件的方式读取了多个配置文件???
目前所知:后来者居上
IConfiguration
可以通过构造注入的方式获得
private IConfiguration _configuration; public Startup(IConfiguration configuration) { _configuration = configuration; }
IConfigurationRoot
IConfigurationRoot是IConfiguration的一个子接口,一般用于读取自定义配置文件,也可用于读取AspNet Core的默认配置文件,但有点画蛇添足。
通过ConfigurationBuilder可以获得IConfigurationRoot的实例
IConfigurationRoot root = new ConfigurationBuilder().AddJsonFile("").Build(); 用法和IConfiguration对象基本一致
本文来自博客园,作者:尾牙衣子,转载请注明原文链接:https://www.cnblogs.com/sunpan/p/14246165.html