.NET Core中如何像Spring Boot一样从环境变量配置appsettings.json
.NET Core中用环境变量配置连接字符串与日志级别
当然有类似Spring Boot的实现方式,.NET Core支持在appsettings.json里用%环境变量名%的语法直接引用环境变量,应用启动时会自动替换对应的取值。下面结合你的配置示例说明具体做法:
1. 配置数据库连接字符串
可以选择替换连接字符串里的敏感参数,或是直接引用整个连接字符串:
方式一:替换部分敏感参数
修改ConnectionStrings下的UATDB值,把原有的{user id}和{password}替换为对应的环境变量:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "UATDB": "Server=localhost;Database=UAT;User ID=%DB_USER%;Password=%DB_PASSWORD%;Trusted_Connection=false;TrustServerCertificate=True;Integrated Security=False;" } }
方式二:引用整个连接字符串
如果想把完整的连接字符串都通过环境变量传递,直接写成:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "UATDB": "%UAT_DB_CONNECTION_STRING%" } }
2. 配置日志级别
用同样的语法替换日志级别的固定值,示例如下:
{ "Logging": { "LogLevel": { "Default": "%LOG_DEFAULT_LEVEL%", "Microsoft.AspNetCore": "%LOG_ASP_NET_LEVEL%" } }, "ConnectionStrings": { "UATDB": "%UAT_DB_CONNECTION_STRING%" } }
注意事项
- 环境变量优先级高于
appsettings.json,只要环境变量存在,就会覆盖配置文件里的默认值; - 环境变量名称不区分大小写,但建议保持命名一致避免混淆;
- Windows系统设置环境变量后,需要重启命令行或IDE才能生效;Linux/macOS可通过
export 变量名=值临时设置,或写入~/.bashrc/~/.zshrc实现永久生效。
内容的提问来源于stack exchange,提问作者Mohamed
相关产品推荐
相关产品推荐

