Asp.net core 是否从secrets/environment变量替换ASP.NET core appsettings.json中类型化数组的部分?

Asp.net core 是否从secrets/environment变量替换ASP.NET core appsettings.json中类型化数组的部分?,asp.net-core,.net-core,Asp.net Core,.net Core,我们有一个ASP.NET核心web应用程序,其appsettings.json: { "Subscriptions": [ { "Name": "Production", "PublishSettings": "<PublishData>SECRET</PublishData>", "Environments": [ { "Name": "Prod", "Deploym

我们有一个ASP.NET核心web应用程序,其appsettings.json:

{
  "Subscriptions": [
    {
      "Name": "Production",
      "PublishSettings": "<PublishData>SECRET</PublishData>",
      "Environments": [
        {
          "Name": "Prod",
          "DeploymentServiceNames": [
            "api1",
            "api2",
            "api3"
          ]
        }
      ]
    },
    {
      "Name": "Test",
      "PublishSettings": "<PublishData>SECRET</PublishData>",
      "Environments": [
        {
          "Name": "Test1",
          "DeploymentServiceNames": [
            "api1",
            "api2"
          ]
        },
        {
          "Name": "Test2",
          "DeploymentServiceNames": [
            "api1",
            "api2"
          ]
        }
      ]
    }
  ]
}
{
“订阅”:[
{
“名称”:“生产”,
“PublishSettings”:“机密”,
“环境”:[
{
“名称”:“产品”,
“DeploymentServiceNames”:[
“api1”,
“api2”,
“api3”
]
}
]
},
{
“名称”:“测试”,
“PublishSettings”:“机密”,
“环境”:[
{
“名称”:“Test1”,
“DeploymentServiceNames”:[
“api1”,
“api2”
]
},
{
“名称”:“Test2”,
“DeploymentServiceNames”:[
“api1”,
“api2”
]
}
]
}
]
}

PublishSettings
值是机密的,因此我希望这些值存在于本地用户机密文件和部署的环境变量中。但是,因为订阅是一个数组,我不知道如何使用。我特别不想在整个
订阅部分中交换。有没有一种方法可以为这样一个数组中的每个项目交换一个属性,可能是通过在强类型订阅模型上定义一个键属性来实现的?

当您在.NET Core中加载配置时,在引擎盖下它被表示为一组键值对(键和值都有
字符串
类型)由添加的配置提供程序提供

例如,
appsettings.json
将由
JsonConfigurationProvider
表示为以下设置列表:

{Subscriptions:0:Environments:0:DeploymentServiceNames:0, api1}
{Subscriptions:0:Environments:0:DeploymentServiceNames:1, api2}
{Subscriptions:0:Environments:0:DeploymentServiceNames:2, api3}
{Subscriptions:0:Environments:0:Name, Prod}
{Subscriptions:0:Name, Production}
{Subscriptions:0:PublishSettings, <PublishData>SECRET</PublishData>}
{Subscriptions:1:Environments:0:DeploymentServiceNames:0, api1}
{Subscriptions:1:Environments:0:DeploymentServiceNames:1, api2}
{Subscriptions:1:Environments:0:Name, Test1}
{Subscriptions:1:Environments:1:DeploymentServiceNames:0, api1}
{Subscriptions:1:Environments:1:DeploymentServiceNames:1, api2}
{Subscriptions:1:Environments:1:Name, Test2}
{Subscriptions:1:Name, Test}
{Subscriptions:1:PublishSettings, <PublishData>SECRET</PublishData>}
或者使用以下键将其添加为环境变量:

Subscriptions:0:PublishSettings
Subscriptions:1:PublishSettings
此类设置覆盖(或添加)对于.NET Core配置绑定器是透明的。设置POCO将包含提供该值的最后一个配置源的
PublishSettings

Subscriptions:0:PublishSettings
Subscriptions:1:PublishSettings