Azure应用程序配置:当试图表示嵌套时,双下划线不等同于冒号

bweufnob  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(78)

在Azure应用程序配置中,我将我的设置命名为:“第1___SubSection1___MySettings”。当尝试将配置绑定到我的.NET 6应用程序中相应的Options类时,它无法正确Map(null)。如果我把“”改为“:“,就可以正常工作了。
我试图解开为什么/如何使用双下划线来表示嵌套,因为通常建议使用“
”以获得更通用的支持。如果我在Azure应用程序配置密钥中使用“:“,在Linux计算机上运行应用程序时,它是否仍然有效?
有人能解释一下吗?

ux6nzvsh

ux6nzvsh1#

使用[StackEdit](>双下划线在尝试表示嵌套时不等同于冒号
是的,表示嵌套配置因托管环境(Windows/Linux)而异。
如果你想在Windows应用程序中设置嵌套配置,那么你需要在嵌套键名称后面提到:符号(你已经尝试过了)。
您可以看到在MSDoc中也提到了这一点
在默认Linux应用服务或自定义Linux容器中,应用设置名称中的任何嵌套JSON键结构(如ApplicationInsights:InstrumentationKey)都需要在App Service中配置为键名称的ApplicationInsights__InstrumentationKey。换句话说,任何:都应该替换为__(双下划线)。

  • 从上面的文档中可以清楚地看到,要在Linux环境中绑定嵌套配置,我们需要使用__双下划线。
  • 检查以下解决方法:*
  • 我已经按照Azure App Configuration with ASP.NET Core添加了嵌套配置。
  • 我已经创建了一个Web应用程序并部署到Linux App Service
  • 最初,我使用:__设置了配置

并试图找回那些值

  • Program.cs中:*
string myconn = builder.Configuration.GetConnectionString("AppConfig");
//string myconn = builder.Configuration.GetSection("AppConfig").Value;
builder.Configuration.AddAzureAppConfiguration(myconn);
  • Index.cshtml中:*
<h4>With Semicolon - @myconfig["Test:Settings:SemiColon"]</h4>
<h4>With UnderScore - @myconfig["Test__Settings__UnderScore"]</h4>
  • 本地输出:*

我已经将应用程序部署到Azure Linux App service

  • 部署应用输出:*

:__对我来说都适用于Linux App EnvironmentAzure App Configuration中部署的应用程序。

  • 当我尝试与Azure App Settings相同时,*
  • 本地appsettings.json文件:*
"Section1": {
  "SubSection1": {
    "MySetting": "Value from Local"
  }
}
  • 最初,我用:设置了配置,并试图检索值。

  • 本地输出:*

  • :在这里工作。

  • 我已经将应用程序部署到Azure Linux App service

  • 为了使用Azure应用程序设置覆盖该值,我将该值设置为如下(使用:)。

  • 在添加设置时,您可以看到下面的错误。

  • 我试过__,它允许我添加。

  • 部署应用输出:*

如果我在Azure应用程序配置密钥中使用“:“,在Linux计算机上运行应用程序时,它是否仍然有效?

  • 是的,:Azure App Configuration中的Azure Linux App Service上工作。
  • 而只有__可以在Azure LinuxAzure App Settings上工作。

相关问题