覆盖 azure 应用服务应用程序设置中的数组

muh*_*san 6 c# azure azure-web-app-service asp.net-core

在我的 .NET Core 应用程序中,我向 appsettings.json 添加了一个数组,如下所示:

{
  "SettingsA": {
    "PropA": [
        "ChildObjectA": {
          ...
        },
        "ChildObjectB": {
          ...
        }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我想从我的 azure 应用程序服务中的应用程序设置中覆盖该值,以便它具有空数组:

{
  "SettingsA": {
    "PropA": []
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

我试着把

SettingsA:PropsA  ->  []
Run Code Online (Sandbox Code Playgroud)

在应用程序设置中,但它似乎没有覆盖 appsettings.json 的值

Luk*_*kos 6

这里的答案https://www.ryansouthgate.com/2016/03/23/iconfiguration-in-netcore/是您可以覆盖数组中的元素或添加其他元素,但他说您不能覆盖整个数组,这看起来很奇怪。

覆盖语法使用从零开始的访问,例如 SettingsA:PropA:0:Something,我已经在 App Services 上尝试过,可以确认它有效。


Ken*_*enR 6

为了补充这里已经给出的所有优秀答案,以下是我们在现实生活场景中的做法。

我们需要在我们的应用程序设置中配置一组受支持的语言。下面是它在我们的 .NET Core 项目中的 appSettings.json 中的样子:

{
    ...

    "SupportedLanguages": [
        {
            "Code": "en-AU",
            "Name": "English (Australia)"
        },
        {
            "Code": "en-GB",
            "Name": "English (United Kingdom)"
        },
        {
            "Code": "en-US",
            "Name": "English (United States)"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这就是它最终在我们的 Azure 应用服务中的样子:

在此处输入图片说明

这有点繁琐,特别是如果您有更大或更复杂的层次结构,但我认为目前没有其他方法。