Я пытаюсь заставить свое приложение .NET Core 3.1 использовать переменные среды при работе в Kubernetes и вернуться к appsettings.json
когда переменная окружения там не задана.
Я использую это в своей ConfigureServices
метод в файле автозагрузки
var configuration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var dbname = configuration.GetSection("DB_NAME").Value;
Мой appsettings.json
в файле есть это
{
"AppSettings": {
"Data": {
"DB_NAME":"test_db"
}
}
}
Я устанавливаю переменную среды, используя следующую команду в командной строке.
setx DB_NAME ="Kube_test_db"
Когда я запускаю приложение в Visual Studio, я получаю имя бд в виде Kube_test_db
. Когда я удаляю переменную пользовательского окружения в системных настройках Windows 10 и снова запускаю приложение в Visual Studio, эта строка возвращает значение null.
var dbname = configuration.GetSection("DB_NAME").Value;
Чего мне не хватает, чтобы значение возвращалось к тому, что определено в appsettings.json
досье?
var dbname = configuration.GetSection("DB_NAME").Value;
Дляvar dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value;
чтобы получить значение из файла appsettings.json. Это не соответствует переменной среды, которая является толькоDB_NAME
. Если я помещу переменную среды вAppsettings:Data:DB_NAME
и запустите код какdbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value;
тогда я все равно получаю значение из appsettings.json, а не из среды.