你可以使用 IConfiguration.GetSection() 来读取环境变量吗?
Can you use IConfiguration.GetSection() to read environment variables?
我在 .NET 6 中使用 Microsoft.Extensions.Configuration
。我正在尝试使用 IConfiguration.GetSection("MySection")
读取前缀为 MySection
的所有环境变量,但它不起作用。
对于其他上下文:我想这样做,以便我可以从 Azure Functions 应用程序的“应用程序设置”选项卡中填充各种应用程序设置类。
我做错了什么还是不支持这个用例?
这是我的程序:
using Microsoft.Extensions.Configuration;
using System.Text.Json;
Environment.SetEnvironmentVariable("MySection__MyProperty", "fromEnvironmentVariable");
var configuration = new ConfigurationBuilder().AddEnvironmentVariables().Build();
Console.WriteLine(
"Environment variable = " +
Environment.GetEnvironmentVariable("MySection__MyProperty")
);
Console.WriteLine(
"configuration[\"MySection:MyProperty\"] = " +
configuration["MySection:MyProperty"]
);
Console.WriteLine(
"configuration.GetSection(\"MySection\") = " +
JsonSerializer.Serialize(configuration.GetSection("MySection"))
);
程序输出:
Environment variable = fromEnvironmentVariable
configuration["MySection:MyProperty"] = fromEnvironmentVariable
configuration.GetSection("MySection") = {"Key":"MySection","Path":"MySection","Value":null}
我希望最后一行的 Value
包含 fromEnvironmentVariable
但它没有。
更改此行;
JsonSerializer.Serialize(configuration.GetSection("MySection"))
对此;
JsonSerializer.Serialize(configuration.GetSection("MySection").GetChildren())
我在 .NET 6 中使用 Microsoft.Extensions.Configuration
。我正在尝试使用 IConfiguration.GetSection("MySection")
读取前缀为 MySection
的所有环境变量,但它不起作用。
对于其他上下文:我想这样做,以便我可以从 Azure Functions 应用程序的“应用程序设置”选项卡中填充各种应用程序设置类。
我做错了什么还是不支持这个用例?
这是我的程序:
using Microsoft.Extensions.Configuration;
using System.Text.Json;
Environment.SetEnvironmentVariable("MySection__MyProperty", "fromEnvironmentVariable");
var configuration = new ConfigurationBuilder().AddEnvironmentVariables().Build();
Console.WriteLine(
"Environment variable = " +
Environment.GetEnvironmentVariable("MySection__MyProperty")
);
Console.WriteLine(
"configuration[\"MySection:MyProperty\"] = " +
configuration["MySection:MyProperty"]
);
Console.WriteLine(
"configuration.GetSection(\"MySection\") = " +
JsonSerializer.Serialize(configuration.GetSection("MySection"))
);
程序输出:
Environment variable = fromEnvironmentVariable
configuration["MySection:MyProperty"] = fromEnvironmentVariable
configuration.GetSection("MySection") = {"Key":"MySection","Path":"MySection","Value":null}
我希望最后一行的 Value
包含 fromEnvironmentVariable
但它没有。
更改此行;
JsonSerializer.Serialize(configuration.GetSection("MySection"))
对此;
JsonSerializer.Serialize(configuration.GetSection("MySection").GetChildren())