Чтение переменных среды выполняется с помощью Механизма конфигурации и, следовательно, доступно через объект IConfiguration
, а не объект IHostEnvironment
.
Чтобы добавить переменные среды в вашу конфигурацию, вам нужно добавить это в ваш Program.cs
файл:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddEnvironmentVariables(); // <-- this line
// optional: use a prefix
//config.AddEnvironmentVariables(prefix: "MYPREFIX_"); // <-- this line
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
И тогда вы можете прочитать переменную среды следующим образом:
public class Startup
{
private IConfiguration Configuration { get; set; }
private IHostEnvironment Environment { get; set; }
public Startup(IConfiguration configuration, IHostEnvironment environment)
{
Environment = environment;
this.Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
...other code
var myEnvValX = this.Configuration["MY_WIN_VAL_X"];
}
}
Обратите внимание, что вы можете ограничить доступные переменные среды, добавив к ним префикс. Например, если у вас есть MYPREFIX_MY_WIN_VAL_X
, MYPREFIX_MY_WIN_VAL_Y
, вы можете ограничить переменные env с помощью config.AddEnvironmentVariables(prefix: "MYPREFIX_")
, и будут показаны только эти две переменные (префикс будет удален).