直接回答:.NET 配置的优先级是环境变量高于配置文件,容器里覆盖连接串按 ConnectionStrings__DefaultConnection 这种双下划线的写法传进去就会自动生效。
使用 appsettings.json 配置文件并通过 Microsoft.Extensions.Configuration 包来读取配置是一种常见且灵活的方法。以下是详细的步骤:
1. 创建 appsettings.json 文件
首先,在项目根目录下创建一个 appsettings.json 文件,并添加一些配置项。例如:
1 | { |
2. 安装必要的 NuGet 包
确保你的项目中安装了以下 NuGet 包:
Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.JsonMicrosoft.Extensions.Configuration.EnvironmentVariables
你可以通过 NuGet 包管理器或命令行来安装这些包:
1 | dotnet add package Microsoft.Extensions.Configuration |
3. 配置 ConfigurationBuilder
在你的应用程序入口(通常是 Program.cs 文件)中,使用 ConfigurationBuilder 来构建配置对象。以下是一个示例:
1 | using Microsoft.Extensions.Configuration; |
4. 运行应用程序
运行你的应用程序,它将从 appsettings.json 文件中读取配置并输出到控制台。
5. 覆盖配置(可选)
你可以在 docker-compose.yml 或 Dockerfile 中使用环境变量来覆盖 appsettings.json 中的配置。例如:
1 | version: '3.4' |
这样,当容器启动时,环境变量会覆盖 appsettings.json 中的相应配置。注意,是双下划线
总结
通过上述步骤,你可以在 .NET 应用程序中使用 appsettings.json 文件和 Microsoft.Extensions.Configuration 包来读取和管理配置。这种方法不仅灵活,而且易于扩展和维护。
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。