Rya*_*ice 2 .net-core asp.net-core
我试图让配置在 ASP.Net core 3.1 中使用双下划线,如下所述: https: //learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/ ?tabs=basicconfiguration&view=aspnetcore -3.1#环境变量
我已经编写了一些手动执行此操作的配置代码
但我发现在 .net 3.1 中,默认情况下应该支持这一点,但需要注意 UNIX 平台上的层次结构设置。在这种情况下你不能使用这个语法
Configuration["SomeSection:SomeConfig"]
Run Code Online (Sandbox Code Playgroud)
解决这个环境变量
## Environment Var
SomeConfig:SomeConfig
Run Code Online (Sandbox Code Playgroud)
因为 Linux 不支持环境变量名称中的冒号。然而,如果代码部署到 Windows 机器上,这将起作用。因此 .net 似乎表明您可以使用此语法
Configuration["SomeSection__SomeConfig"]
Run Code Online (Sandbox Code Playgroud)
这将解决以下任何配置
// AppSettings...json
{
"SomeSection" {
"SomeConfig": "some value"
}
}
Run Code Online (Sandbox Code Playgroud)
或者
# Environment Var on linux
SomeConfig__SomeConfig
Run Code Online (Sandbox Code Playgroud)
或者
// Environment Var on windows
SomeConfig:SomeConfig
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?
编辑:请注意,我知道这个问题的答案,并且如果重新打开它,我会很乐意回答它。
我误解了文档。它的工作方式是,如果您在您的Startup.cs
Configuration["SomeSection:SomeConfig"]
Run Code Online (Sandbox Code Playgroud)
它将正确解决
// AppSettings...json
{
"SomeSection" {
"SomeConfig": "some value"
}
}
Run Code Online (Sandbox Code Playgroud)
从您的各种appsettings*.json文件中。
SomeSection:SomeConfig但是,如果您使用将使用的名称而不是appsettings.json值来定义环境变量,这是一个很棒的功能。在 Docker 容器中运行应用程序时,这通常是可取的。
但是,如果在 Linux 操作系统上,则无法创建名为 的环境变量SomeSection:SomeConfig。因此,如果您在 Linux 计算机或 Linux 容器中,如果您SomeSection__SomeConfig使用__(双下划线)而不是 a 来命名环境变量:,那么您可以像下面这样访问:
Configuration["SomeSection:SomeConfig"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6527 次 |
| 最近记录: |