Asp.net core 是否从secrets/environment变量替换ASP.NET core appsettings.json中类型化数组的部分?
我们有一个ASP.NET核心web应用程序,其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
{
"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