.NET Core 3.1 aplikáciu používať premenné prostredia beží v Kubernetes a fallback na appsettings.json, keď premennej prostredia nie je nastavené

0

Otázka

Snažím sa dostať môj .NET Core 3.1 aplikáciu používať premenné prostredia, keď beží v Kubernetes a fallback na appsettings.json pri premennej prostredia nie je nastavené tam.

Ja používam to v mojom ConfigureServices postup pri spustení súboru

var configuration = new ConfigurationBuilder()
                                    .AddEnvironmentVariables()
                                    .Build();
var dbname = configuration.GetSection("DB_NAME").Value;

Môj appsettings.json súbor má tento

{
    "AppSettings": {
        "Data": {
            "DB_NAME":"test_db"
        }
    }
}

Ja som nastavenie premennej prostredia pomocou nasledujúceho príkazu na príkazovom riadku.

setx DB_NAME ="Kube_test_db"

Keď som spustiť aplikáciu Visual Studio, ktorý som si db meno ako Kube_test_db. Keď som na odstránenie Používateľa premennej prostredia na Windows 10 systémové nastavenia a spustiť aplikáciu znova v Visual Studio, tento riadok sa vráti hodnotu null.

var dbname = configuration.GetSection("DB_NAME").Value;

Čo mám chýba dostať hodnota klesne späť na to, čo je definované v appsettings.json súbor?

1

Najlepšiu odpoveď

0

Použitie .AddJsonFile.

A to skôr než zavoláte .AddEnvironmentVariables(). Tak ako:

        new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddEnvironmentVariables()
            .Build();
2021-11-26 17:49:28

I dont get hostingEnvironment v konfigurovať metóda, kde som ju potrebujú. Aj ja som sa bude musieť zmeniť var dbname = configuration.GetSection("DB_NAME").Value; na var dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; ak chcete získať hodnotu z appsettings.json. Táto nezhoduje premennej prostredia, ktoré je len DB_NAME. Ak som dal premennej prostredia ako Appsettings:Data:DB_NAME a spustiť kód ako dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; potom som ešte dostať sa hodnota z appsettings.json, a nie z prostredia.
user20358

Použitie __ (2 podčiarkuje) ako oddeľovač pre nastavenie premenných prostredia: docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/...
omajid

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................