配置系统

默认添加配置提供者

ASP.NET CORE默认添加的配置提供者:
1)加载现有的IConfiguration
2)加载项目根目录下的appsettings.json
3)加载项目根目录下的appsettings.{Environment}.json
4)当程序运行在开发环境在,程序会加载“用户机密”配置
5)加载环境变量中的配置
6)加载命令行中的配置

开发、测试、生产环境

不同的环境有不同的配置
运行环境:ASP.NET Core会从环境变量中读取名字为ASPNETCORE_ENVIRONMENT的值,推荐值:Development、Staging、Production。
读取方法:app.Environment.EnvironmentName、app.Environment.IsDevelopment()……
在windows和vs中设置环境变量的方法。

机密信息

1、把不方便放到appsetting.json中的机密信息放到一个不在项目中的json文件中。
2、在ASP.NET Core项目上单击鼠标右键,选择【管理用户机密】。
3、secrets.json文件和项目通过csproj文件中的<UserSecretsId>建立关系。
注意事项:
机密信息仅供开发人员使用。
仍然是明文存储,如果不想被人看到可通过Azure Key Vault、Zack.AnyDBConfigProvider等,但是无法完全避免。
如果因为重装、新员工等原因导致secrets.js重建,就要重新配置,如果影响大的话,还是用集中式配置服务器。

配置系统的使用

其实没必要看我的,直接看文档就行。

1
2
3
4
5
6
//Program.cs
builder.Configuration.AddJsonFile("MyConfig.json",//添加json配置文件
optional: true,
reloadOnChange: true
);
builder.Services.Configure<Config>(builder.Configuration);//将Config注入到DI中,并且绑定到根节点上
1
2
3
4
5
6
7
8
9
10
//MyConfig.json
{
"name": "张三",
"age": "18",
"proxy": {
"address": "aa",
"port": "8080"
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
//ConfigController.cs
[Route("api/[controller]")]
[ApiController]
public class ConfigController : ControllerBase {
private readonly IOptionsSnapshot<Config> optConfig;//在需要用到的地方依赖注入
public ConfigController(IOptionsSnapshot<Config> optConfig) {
this.optConfig = optConfig;
}
[HttpGet]
public string Test() {
return optConfig.Value.Proxy.Address;
}
}