在没有前缀的通用主机中读取环境变量(.NET)
Posted
技术标签:
【中文标题】在没有前缀的通用主机中读取环境变量(.NET)【英文标题】:Read Environment Variables in generic host without prefix (.NET) 【发布时间】:2021-07-31 16:48:00 【问题描述】:我想在 .NET 5 或 .NET 6 中读取我的自定义环境变量。我遇到了一些问题。我只能读取带有DOTNET_
和ASPNETCORE_
前缀的环境变量:
例如,我看不懂MyKey=MyValue
:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostContext,configuration) =>
string myKey = hostContext.Configuration["MyKey"];
configuration.AddJsonFile($"Airlines/myKey.json");
)
.ConfigureServices((hostContext, services) =>
services.AddRabbitMQ();
services.AddSingleton<NiraAvailableFlightsConsumer>();
services.AddOptions<AirlineOptions>()
.Bind(hostContext.Configuration);
);
【问题讨论】:
【参考方案1】:默认构建器的documentation 表示:
从以下位置加载主机配置:
以 DOTNET_ 为前缀的环境变量。
因此,您的变量不会作为主机上下文配置的一部分读取。您可以通过将ConfigureHostConfiguration
调用添加到您的启动项来告诉构建器加载所有环境变量:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(config =>
config.AddEnvironmentVariables();
)
.ConfigureAppConfiguration((hostContext, configuration) =>
string myKey = hostContext.Configuration["MyKey"];
configuration.AddJsonFile($"Airlines/myKey.json");
)
.ConfigureServices((hostContext, services) =>
....
);
【讨论】:
以上是关于在没有前缀的通用主机中读取环境变量(.NET)的主要内容,如果未能解决你的问题,请参考以下文章