在Azure应用程序配置中,我将我的设置命名为:“第1___SubSection1___MySettings”。当尝试将配置绑定到我的.NET 6应用程序中相应的Options类时,它无法正确Map(null)。如果我把“”改为“:“,就可以正常工作了。我试图解开为什么/如何使用双下划线来表示嵌套,因为通常建议使用“”以获得更通用的支持。如果我在Azure应用程序配置密钥中使用“:“,在Linux计算机上运行应用程序时,它是否仍然有效?有人能解释一下吗?
ux6nzvsh1#
使用[StackEdit](>双下划线在尝试表示嵌套时不等同于冒号是的,表示嵌套配置因托管环境(Windows/Linux)而异。如果你想在Windows应用程序中设置嵌套配置,那么你需要在嵌套键名称后面提到:符号(你已经尝试过了)。您可以看到在MSDoc中也提到了这一点在默认Linux应用服务或自定义Linux容器中,应用设置名称中的任何嵌套JSON键结构(如ApplicationInsights:InstrumentationKey)都需要在App Service中配置为键名称的ApplicationInsights__InstrumentationKey。换句话说,任何:都应该替换为__(双下划线)。
:
ApplicationInsights:InstrumentationKey
ApplicationInsights__InstrumentationKey
__
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。
Azure Linux App service
:和__对我来说都适用于Linux App Environment和Azure App Configuration中部署的应用程序。
Linux App Environment
Azure App Configuration
Azure App Settings
appsettings.json
"Section1": { "SubSection1": { "MySetting": "Value from Local" } }
最初,我用:设置了配置,并试图检索值。
本地输出:*
:在这里工作。
为了使用Azure应用程序设置覆盖该值,我将该值设置为如下(使用:)。
如果我在Azure应用程序配置密钥中使用“:“,在Linux计算机上运行应用程序时,它是否仍然有效?
Azure Linux App Service
Azure Linux
1条答案
按热度按时间ux6nzvsh1#
使用[StackEdit](>双下划线在尝试表示嵌套时不等同于冒号
是的,表示嵌套配置因托管环境(Windows/Linux)而异。
如果你想在Windows应用程序中设置嵌套配置,那么你需要在嵌套键名称后面提到
:
符号(你已经尝试过了)。您可以看到在MSDoc中也提到了这一点
在默认Linux应用服务或自定义Linux容器中,应用设置名称中的任何嵌套JSON键结构(如
ApplicationInsights:InstrumentationKey
)都需要在App Service中配置为键名称的ApplicationInsights__InstrumentationKey
。换句话说,任何:
都应该替换为__
(双下划线)。__
双下划线。Linux App Service
。:
和__
设置了配置并试图找回那些值
Program.cs
中:*Index.cshtml
中:*我已经将应用程序部署到
Azure Linux App service
。:
和__
对我来说都适用于Linux App Environment
和Azure App Configuration
中部署的应用程序。Azure App Settings
相同时,*appsettings.json
文件:*最初,我用
:
设置了配置,并试图检索值。本地输出:*
:
在这里工作。我已经将应用程序部署到
Azure Linux App service
。为了使用Azure应用程序设置覆盖该值,我将该值设置为如下(使用
:
)。__
,它允许我添加。如果我在Azure应用程序配置密钥中使用“:“,在Linux计算机上运行应用程序时,它是否仍然有效?
:
在Azure App Configuration
中的Azure Linux App Service
上工作。__
可以在Azure Linux
和Azure App Settings
上工作。