如果设置存在于appsetings.json中,为什么会忽略环境变量?

时间:2019-01-24 17:03:24

标签: asp.net-core

这是我的程序:

appsettings.json

没什么特别的。

{ "Integrations" : { "Pipedrive" : { "ApiToken" : "some value" ... } } } 文件中,我有一个设置:

ASPNETCORE_INTEGRATIONS__PIPEDRIVE__APITOKEN

我还设置了变量appsettings.json

如果我从EnvironmentVariablesConfigurationProvider文件中删除密钥,则配置会返回与环境变量相同的值。

但是,如果设置文件中存在密钥,我会从文件中获取价值。
而且,我可以看到JsonConfigurationProviderImmediate Window之后。

最奇怪的是,当我尝试Configuration.GetValue<string>("ASPNETCORE_Integrations:Pipedrive:ApiToken"); 时:

ASPNETCORE_

我得到分配给环境变量的值。

谁能解释我,为什么在一种情况下new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT| ItemTouchHelper.LEFT) 前缀被忽略,而在另一种情况下却没有。

我没有明确配置主机或应用程序配置。

1 个答案:

答案 0 :(得分:0)

对于环境变量,必须用某种分隔符来表示各节。通常是cp.id,尽管显然双下划线(cn)也可以。但是,:只有一个下划线,因此它被__解释为一个标记。但是,即使那里也有一个双下划线,它仍然不会覆盖您的JSON,因为JSON没有ASPNETCORE_部分。

长短不一,放下INTEGRATIONS位。环境变量名称必须与您的JSON部分完全匹配 (每个部分名称之间都有分隔符),否则将不会覆盖任何内容。