.NET配置提供程序按优先级加载,后添加的可覆盖前者。1. 命令行提供程序通过--key=value格式从参数读取,适用于临时修改;2. 环境变量提供程序用双下划线__分隔键名,常用于区分运行环境;3. JSON提供程序加载appsettings.json及其环境变体,支持嵌套结构;4. 内存提供程序将字典作为配置源,适合测试;5. 用户机密提供程序在开发时存储敏感信息于用户目录,避免提交到代码库;6. Azure Key Vault提供程序从云服务获取密钥,提升安全性;7. 其他包括XML、INI文件及第三方如Consul、Redis等。实际应用中通常组合使用,如先加载JSON文件,再由环境变量和命令行参数逐层覆盖,实现灵活部署。

.NET 中的配置提供程序用于从不同来源加载应用程序配置。这些提供程序按优先级顺序添加,后添加的可以覆盖前面的设置。常见的配置提供程序类型包括以下几种:
1. 命令行配置提供程序
从命令行参数读取配置,适合在部署或调试时动态传入设置。
- 支持格式如:--key=value 或 -k=value
- 常用于容器化环境或 CI/CD 脚本中临时修改行为
2. 环境变量配置提供程序
读取操作系统环境变量,广泛用于区分开发、测试、生产等不同运行环境。
- 例如:ASPNETCORE_ENVIRONMENT 控制启动环境
- 键名使用双下划线 __ 分隔层级(如:ConnectionStrings__Default)
3. JSON 配置提供程序
加载 JSON 格式的配置文件,最常用的是 appsettings.json 和 appsettings.{Environment}.json。
- 支持嵌套结构和数组
- 可设置是否可选以及是否支持重载
4. 内存配置提供程序
将字典数据作为配置源,通常用于测试或编程方式注入默认值。
- 不依赖外部文件或系统变量
- 适合单元测试中模拟配置场景
5. 用户机密(Secret Manager)配置提供程序
专为开发阶段设计,避免将敏感信息硬编码到源码中。
- 配置存储在用户目录下的 JSON 文件中,不会随代码提交
- 仅在开发环境中启用
6. Azure Key Vault 配置提供程序
从 Azure Key Vault 服务加载安全密钥和连接字符串。
- 适用于云部署中的安全管理
- 与 Azure 托管身份集成,提升安全性
7. 其他内置和第三方提供程序
除了上述主流类型,.NET 还支持更多扩展选项。
- XML 配置提供程序:读取 XML 格式文件
- INI 配置提供程序:兼容传统 INI 文件结构
- Consul / Redis / 数据库等:通过第三方库实现动态配置中心
基本上就这些。实际项目中通常组合使用多种提供程序,比如先加载 appsettings.json,再用环境变量覆盖,最后允许命令行参数调整关键值。这种分层机制让应用更灵活、更易部署到不同环境中。










