Próbuję zmusić swoją aplikację .NET Core 3.1 używać zmiennych środowiskowych podczas pracy w Kubernetes i wrócić do appsettings.json
gdy zmienna nie jest ustawiona.
Używam go w swojej ConfigureServices
metoda w pliku startowym
var configuration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var dbname = configuration.GetSection("DB_NAME").Value;
Mój appsettings.json
w pliku jest to
{
"AppSettings": {
"Data": {
"DB_NAME":"test_db"
}
}
}
Ja ustawiam zmienną środowiska, przy użyciu następującego polecenia w wierszu polecenia.
setx DB_NAME ="Kube_test_db"
Kiedy uruchamiam aplikację w Visual Studio, otrzymuję nazwę bazy danych w postaci Kube_test_db
. Kiedy usuwam zmienną środowiska użytkownika w ustawieniach systemu Windows 10 i ponownie uruchomić aplikację w Visual Studio, ten wiersz zwraca wartość null.
var dbname = configuration.GetSection("DB_NAME").Value;
Czego mi brakuje, aby wartość wróciło do tego, co jest określone w appsettings.json
akta?
var dbname = configuration.GetSection("DB_NAME").Value;
Dlavar dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value;
aby uzyskać wartość z pliku appsettings.json. To nie pasuje do zmiennej środowiskowej, która jest tylkoDB_NAME
. Jeśli położę zmienną środowiska wAppsettings:Data:DB_NAME
i uruchom kod jakdbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value;
wtedy ja nadal otrzymuję wartość z appsettings.json, a nie z otoczenia.