Asp.net core DotNetCore 3.1中的配置使用双下划线';I don’好像没有我想象的那样工作
我正试图获得在ASP.Net core 3.1中工作的配置的双下划线,如下所述: 我已经为手动执行此操作的配置编写了一些代码Asp.net core DotNetCore 3.1中的配置使用双下划线';I don’好像没有我想象的那样工作,asp.net-core,.net-core,Asp.net Core,.net Core,我正试图获得在ASP.Net core 3.1中工作的配置的双下划线,如下所述: 我已经为手动执行此操作的配置编写了一些代码 检查环境变量 检查AppSettings…json文件 但我在.NET3.1中看到,默认情况下,这应该得到支持,但unix平台上的分层设置有一个警告。在这种情况下,不能使用此语法 Configuration[“SomeSection:SomeConfig”] 解析此环境变量的步骤 ##环境变量 SomeConfig:SomeConfig 因为linux不支持环境变量名
Configuration[“SomeSection:SomeConfig”]
解析此环境变量的步骤
##环境变量
SomeConfig:SomeConfig
因为linux不支持环境变量名称中的冒号。但是,如果将代码部署到windows计算机上,这将起作用。因此,.net似乎表明您可以使用这种语法
Configuration[“SomeSection\uuuu SomeConfig”]
这将解决以下任何配置
//AppSettings…json
{
“部分”{
“SomeConfig”:“某些值”
}
}
或
linux上的环境变量
SomeConfig\uuu SomeConfig
或
//windows上的环境变量
SomeConfig:SomeConfig
有人知道我做错了什么吗
编辑:
请注意,我知道这个问题的答案,如果重新打开,我会很乐意回答。我不理解文档。它的工作方式是在
start.cs
Configuration["SomeSection:SomeConfig"]
它将正确地解决问题
// AppSettings...json
{
"SomeSection" {
"SomeConfig": "some value"
}
}
从您的各种应用程序设置文件
但是,如果您定义了一个名为SomeSection:SomeConfig
的环境变量,则将使用该变量来代替AppSettings值,这是一个很好的特性。在docker容器中运行应用程序时,这通常是可取的
但是,如果您在linux操作系统上,则无法创建名为SomeSection:SomeConfig
的环境变量。因此,如果您在linux机器上或linux容器中,而不是使用\uuuu
(双下划线)而不是:
来命名环境变量SomeSection\uu SomeConfig
,那么它将由
Configuration["SomeSection:SomeConfig"]
目前还不完全清楚,您现在遇到了什么问题以及上面的代码有什么问题
Configuration[“SomeSection:SomeConfig”]
不访问环境变量,它从SomeSection
部分检索SomeConfig
设置,无论该设置来自何处。这些值由配置提供程序提供,配置提供程序可能会从文件、数据库、命令行、服务等加载设置。因此,您似乎只想问环境变量提供程序在Linux中如何工作,以及环境变量名称如何根据您链接到的文档映射到配置设置,名为SomeSection\uuu SomeConfig
的环境变量应能在所有平台上工作