这是我的程序:
appsettings.json
没什么特别的。
在{
"Integrations" : {
"Pipedrive" : {
"ApiToken" : "some value"
...
}
}
}
文件中,我有一个设置:
ASPNETCORE_INTEGRATIONS__PIPEDRIVE__APITOKEN
我还设置了变量appsettings.json
。
如果我从EnvironmentVariablesConfigurationProvider
文件中删除密钥,则配置会返回与环境变量相同的值。
但是,如果设置文件中存在密钥,我会从文件中获取价值。
而且,我可以看到JsonConfigurationProvider
在Immediate Window
之后。
最奇怪的是,当我尝试Configuration.GetValue<string>("ASPNETCORE_Integrations:Pipedrive:ApiToken");
时:
ASPNETCORE_
我得到分配给环境变量的值。
谁能解释我,为什么在一种情况下new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT|
ItemTouchHelper.LEFT)
前缀被忽略,而在另一种情况下却没有。
我没有明确配置主机或应用程序配置。
答案 0 :(得分:0)
对于环境变量,必须用某种分隔符来表示各节。通常是cp.id
,尽管显然双下划线(cn
)也可以。但是,:
只有一个下划线,因此它被__
解释为一个标记。但是,即使那里也有一个双下划线,它仍然不会覆盖您的JSON,因为JSON没有ASPNETCORE_
部分。
长短不一,放下INTEGRATIONS
位。环境变量名称必须与您的JSON部分完全匹配 (每个部分名称之间都有分隔符),否则将不会覆盖任何内容。