如何定义 List 环境变量,以便我可以在 C# 中读取它

问题描述 投票:0回答:1

我有一个

appsettings.json
文件,其中包含一个字符串列表:[“foo”,“bar”]。
我试图用环境变量覆盖这个变量。当我这样做时,当我以列表形式检索变量时,我仍然会收到来自 appsettings 的值。如果我将其作为字符串检索,我会收到环境变量值。

我当前的代码如下:

appsettings.json
文件:

{
  "MyVariable": ["test"],
}

Program.cs
文件:

var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .AddEnvironmentVariables()
            .Build();

如果我运行以下代码而不注入任何环境变量,它就会起作用。

var result = config.GetSection("MyVariable").Get<List<string>>(); // returns a list with one element "test"

如果我添加以下环境变量并再次运行,我仍然得到相同的结果:一个包含一个元素“test”的列表。

MyVariable=["foo", "bar"]

奇怪的是:如果我运行

config.GetSection("MyVariable").Get<string>()
它会返回以下字符串:
MyVariable=[\"foo\", \"bar\"]

如何将

MyVariable
定义为列表,以便我仍然可以通过以下方式检索它:
config.GetSection("MyVariable").Get<List<string>>()

c# .net-core environment-variables
1个回答
0
投票

您需要为每个项目使用一个环境变量,并且名称应包含索引,如下所示:

MyVariable__0="foo"
MyVariable__1="bar"

双下划线被解释为节分隔符。

© www.soinside.com 2019 - 2024. All rights reserved.