对于我们的dotnet应用程序,我们有一个appsettings.json文件,使用分层设置,如:
"mysection":{"myproperty":"my secret value"}
此appsettings.json用于开发目的。
在生产模式下,我们使用Azure Keyvault(因为我们的应用程序正在Azure下运行(在密钥库中,秘密是用定义的
mysection--myproperty
但现在,我们需要在IIS下部署相同的Web服务。我们想在IIS设置下定义机密值,但mysection--myproperty或mysection:myproperty不起作用。
你知道如何在IIS下设置这个层次结构吗?
使用环境变量时,子部分需要用双下划线__
分隔。
来自文档:
:
分隔符不适用于所有平台上的环境变量层次键。__
,双下划线,是:
- 所有平台都支持。例如,Bash不支持
:
分隔符,但支持__
分隔符- 自动替换为
:
这意味着您需要将mysection--myproperty
更改为
mysection__myproperty
以便对其进行正确解析。
此外,您可以使用IConfigurationRoot.GetDebugView()
来查看配置值的来源。