在容器中使用环境变量覆盖ASP.NET Core appsettings中带有点的键名

5

我正在尝试将一个旧的应用程序迁移到新的 .net 6 版本,问题在于该应用程序具有一个第三方库,其中的密钥将在 appsettings.json 文件中查找。

类似于以下内容(请注意密钥中的点):

{
    "one.special.key":"one value"
}

我现在遇到的问题是我的新应用程序将在容器内运行,并使用环境变量进行密钥注入。我认为容器环境(即-Linux)不接受带有点的环境变量,只接受一个/双下划线的约定,例如:one_special_key
当一个appsetting.json文件中的键包含点(.)时,如何覆盖它的值,而不是传统的形式?例如:some_key_without_dots=hello

这份文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0#non-prefixed-environment-variables 可能会有所帮助,但它只会使具有相同键的变量过载。 - Ruikai Feng
2个回答

0

如果我没记错 - 如果您保留这样的环境变量 one__special__key - 应用程序将使用此值而不是来自 appsettings.json 文件的值。

来自 文档 的内容

使用默认配置,EnvironmentVariablesConfigurationProvider 在读取 appsettings.json、appsettings.{Environment}.json 和用户机密后从环境变量键值对中加载配置。因此,从环境中读取的键值会覆盖从 appsettings.json、appsettings.{Environment}.json 和用户机密中读取的值。


谢谢提供链接,我知道重载优先级的问题,但关键是如果注入点的键在容器环境中是否有效,并且键值重载是否与下划线键相同。 - Coastpear

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接