Чтение переменных среды на универсальном хосте без префикса (.NET)
Я хочу читать свои пользовательские переменные среды в .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 ответ
В документации к строителю по умолчанию сказано:
Загружает конфигурацию хоста из:
- Переменные среды с префиксом 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) =>
{
....
});