.Net Core 教程 Part4 – (33)(34)(35)配置系统

Part4 – (33) 与配置系统的集成

ASP.NET Core默认添加的配置提供者

1)加载现有的IConfiguration。

2)加载项目根目录下的appsettings.json。

3)加载项目根目录下的appsettings.{Environment}.json。

4)当程序运行在开发环境下,程序会加载“用户机密”配置。

5)加载环境变量中的配置。 6)加载命令行中的配置。

配置的环境问题

1、Why?开发环境、测试环境、生产环境需要进行不同配置。

2、运行环境:ASP.NET Core 会从环境变量中读取名字为ASPNETCORE_ENVIRONMENT的值。推荐值:Development(开发环境)、Staging(测试环境)、Production(生产环境)。

3、读取方法:app.Environment.EnvironmentName、app.Environment.IsDevelopment()……

4、在Windows和VS(推荐开发时用)中设置环境变量的方法。

.Net Core 教程 Part4 – (33)(34)(35)配置系统
读取环境变量
.Net Core 教程 Part4 – (33)(34)(35)配置系统
注入Env进行使用

Part4 – (34) 防止机密信息泄露

User Secrets

1、把不方便放到appsettings.json中的机密信息放到一个不在项目中的json文件中。

2、在ASP.NET Core项目上单击鼠标右键,选择【管理用户机密】。

3、secrets.json文件到底保存在哪里?如何和项目建立关系?csproj文件中的<UserSecretsId>

注意事项

1、供开发人员使用的,不适合在生产环境中使用。

2、仍然是明文存储。不想别人看到怎么办?Azure Key Vault、Zack.AnyDBConfigProvider等。无法完全避免。加强安全防控更重要。

3、如果因为重装、新员工等原因导致secrets.json重建,就要重新配置,麻烦。如果影响大的话,还是用集中式配置服务器。

Part4 – (35) 配置系统综合案例

需求:

1)  系统的主要配置(Redis、Smtp)放到配置专用的数据库中。Zack.AnyDBConfigProvider

2)  连接配置数据库的连接字符串配置在“用户机密”中。”Data Source=.;Initial Catalog=demo1;Integrated Security=SSPI;”

3)  把Smtp的配置显示到界面上。

4)  程序启动的时候就连接Redis,并且把Redis连接对象注册到依赖注入系统中。

builder.Services.AddSingleton<IConnectionMultiplexer>(sp => {
    string connStr = builder.Configuration.GetValue<string>("Redis:ConnStr");
    return ConnectionMultiplexer.Connect(connStr);
});

本文版权归个人技术分享站点所有,发布者:chaoqiang,转转请注明出处:https://www.zhengchaoqiang.com/1516.html

chaoqiangchaoqiang
上一篇 2022-01-07 19:05
下一篇 2022-01-07 21:07

相关推荐

近期个人博客正在迁移中,原博客请移步此处,抱歉!