Здесь есть два основных момента. Во-первых, согласно Конфигурация в ASP. NET Ядро , переменные среды извлекаются только для текущего процесса
Устанавливаются только в процессах, запущенных из командного окна, в котором они находились. установить в
Таким образом, вы должны установить их в том же командном окне перед запуском приложения или добавить в launchsettings.json
файл
"environmentVariables": {
"Test": "Test",
"ASPNETCORE_ENVIRONMENT": "Development"
}
и перезапустить Visual Studio для этого. Или просто измените его в свойствах Debug вашего проекта
![enter image description here](https://i.stack.imgur.com/5rL0T.png)
Во-вторых, чтобы можно было получить системную переменную среды в GetEnvironmentVariable
метод, вы должны указать EnvironmentVariableTarget.Machine
параметр
var envValue = Environment.GetEnvironmentVariable("Test", EnvironmentVariableTarget.Machine);
По умолчанию
Метод GetEnvironmentVariable(String)
извлекает переменную среды из среды только блок текущего процесса
Или, если вы добавите переменную к launchsettings.json
в предыдущей точке, установка цели не требуется.
Однако, если вы запустит ваш проект в командной строке через dotnet run
, вы также сможете получить доступ к системной переменной среды, поскольку
В Windows системах блок среды текущего процесса включает в себя:
Все переменные среды, предоставленные ему родительским процессом, который его создал. Например, приложение. NET, запускаемое из окна консоли, наследует все переменные среды окна консоли.
Если нет родительского процесса, среды для компьютера и пользователя переменные используются вместо. Например, в новом окне консоли все переменные среды для компьютера и для пользователя определены во время его запуска.