.NET Core 3.1 app per utilizzare le variabili di ambiente in esecuzione in Kubernetes e di fallback per appsettings.json quando la variabile di ambiente non impostato

0

Domanda

Sto cercando di ottenere il mio .NET Core 3.1 app per utilizzare le variabili di ambiente durante l'esecuzione in Kubernetes e di riserva appsettings.json quando la variabile di ambiente non ci si.

Sto usando questo nel mio ConfigureServices metodo nel file di avvio

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

Il mio appsettings.json il file è questo

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

Sto impostando la variabile di ambiente utilizzando il seguente comando nel prompt dei comandi.

setx DB_NAME ="Kube_test_db"

Quando si esegue l'applicazione in Visual Studio, ho il db nome Kube_test_db. Quando si elimina la variabile d'ambiente Utente su Windows 10 impostazioni di sistema ed eseguire nuovamente l'applicazione in Visual Studio, questa riga restituisce null.

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

Quello che mi manca per ottenere il valore di cadere di nuovo a ciò che è definito il appsettings.json il file?

1

Migliore risposta

0

Utilizzare .AddJsonFile.

E farlo prima di chiamare .AddEnvironmentVariables(). In questo modo:

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

I dont ottenere hostingEnvironment nel configurare il metodo di cui ho bisogno. Inoltre, ho bisogno di cambiare il var dbname = configuration.GetSection("DB_NAME").Value; per var dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; per ottenere il valore da appsettings.json. Questo non corrisponde alla variabile di ambiente che è solo DB_NAME. Se ho messo la variabile di ambiente come Appsettings:Data:DB_NAME ed eseguire il codice dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; poi ho ancora ottenere il valore da appsettings.json e non dall'ambiente.
user20358

Utilizzare __ (2 trattini bassi) come separatore per l'impostazione delle variabili di ambiente: docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/...
omajid

In altre lingue

Questa pagina è in altre lingue

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