.NET Core 3.1 aplicație pentru a utiliza variabilele de mediu care rulează în Kubernetes și de rezervă pentru a appsettings.json când variabila de mediu nu este setat

0

Problema

Încerc să-mi iau .NET Core 3.1 aplicație pentru a utiliza variabile de mediu atunci când rulează în Kubernetes și de rezervă pentru appsettings.json atunci când variabila de mediu nu a stabilit acolo.

Eu sunt, folosind acest lucru în mea ConfigureServices metoda în fișierul de pornire

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

Mea appsettings.json acest fișier a

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

Sunt setarea variabilei de mediu utilizând următoarea comandă la promptul de comandă.

setx DB_NAME ="Kube_test_db"

Când am rula aplicație în Visual Studio, am pb nume ca Kube_test_db. Când am șterge Utilizatorul mediu variabile pe Windows 10 setările de sistem și rulați aplicația din nou în Visual Studio, această linie returnează null.

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

Ce îmi lipsește pentru a obține valoarea de a cădea înapoi la ceea ce este definit în appsettings.json de fișiere?

1

Cel mai bun răspuns

0

Utilizarea .AddJsonFile.

Și fă-o înainte de a apela .AddEnvironmentVariables(). Astfel:

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

I dont a lua hostingEnvironment în configura metodă în cazul în care am nevoie de ea. De asemenea, am nevoie pentru a schimba var dbname = configuration.GetSection("DB_NAME").Value; pentru a var dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; pentru a obține valoarea de appsettings.json. Acest lucru nu se potrivește cu variabila de mediu care este doar DB_NAME. Dacă am pus variabila de mediu ca Appsettings:Data:DB_NAME și rula cod ca dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; apoi am mai iau valoare de la appsettings.json și nu din mediu.
user20358

Utilizarea __ (2 subliniere) ca separator pentru stabilirea variabilele de mediu: docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/...
omajid

În alte limbi

Această pagină este în alte limbi

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