.NET Jádro 3.1 aplikace pro použití proměnné prostředí běží v Kubernetes a záložní appsettings.json, když není nastavena proměnná prostředí

0

Otázka

Snažím se dostat můj .NET Jádro 3.1 aplikace pro použití proměnné prostředí, když běží v Kubernetes a záložních appsettings.json když proměnná není nastavena.

Používám to v mé ConfigureServices metoda, při spuštění, soubor

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

Můj appsettings.json tento soubor má

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

Já jsem nastavení proměnné prostředí pomocí následujícího příkazu na příkazovém řádku.

setx DB_NAME ="Kube_test_db"

Při spuštění aplikace v aplikaci Visual Studio, mám db název jako Kube_test_db. Když jsem odstranit Uživatelské proměnné prostředí v systému Windows 10 systému windows a znovu spustit aplikaci v Visual Studio, tento řádek vrátí null.

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

Co mi tu chybí, aby si hodnotu k pádu zpátky na to, co je definováno v appsettings.json souboru?

1

Nejlepší odpověď

0

Použití .AddJsonFile.

A to předtím, než zavoláte .AddEnvironmentVariables(). Tak jako:

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

I dont dostat hostingEnvironment v konfiguraci metoda, kde to potřebuji. Také budu muset změnit var dbname = configuration.GetSection("DB_NAME").Value; k var dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; získat hodnotu z appsettings.json. To neodpovídá proměnná prostředí, která je pouze DB_NAME. Když jsem dal proměnné prostředí jako Appsettings:Data:DB_NAME a spustit kód jako dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; pak jsem ještě dostat hodnotu z appsettings.json a ne z prostředí.
user20358

Použití __ (2 podtržítka) jako oddělovač pro nastavení proměnné prostředí: docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/...
omajid

V jiných jazycích

Tato stránka je v jiných jazycích

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