.NET de Base 3.1 application pour utiliser des variables d'environnement en cours d'exécution dans Kubernetes et de secours de appsettings.json lors de la variable d'environnement pas ensemble

0

La question

J'essaie d'obtenir mon .NET de Base 3.1 application pour utiliser les variables d'environnement lors de l'exécution dans Kubernetes et de secours de appsettings.json lors de la variable d'environnement pas là.

J'utilise dans mon ConfigureServices méthode dans le fichier de démarrage

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

Mon appsettings.json ce fichier a

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

Je suis à la définition de la variable d'environnement à l'aide de la commande suivante dans l'invite de commande.

setx DB_NAME ="Kube_test_db"

Quand je lance l'application dans Visual Studio, j'ai le nom db comme Kube_test_db. Quand je supprime la variable d'environnement Utilisateur sur Windows 10 paramètres du système et exécutez à nouveau l'application dans Visual Studio, cette ligne renvoie la valeur null.

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

Ce qui me manque pour obtenir la valeur de revenir à ce qui est défini dans le appsettings.json fichier?

1

La meilleure réponse

0

Utilisation .AddJsonFile.

Et de le faire avant d'appeler .AddEnvironmentVariables(). Comme suit:

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

Je n'obtiens hostingEnvironment dans la configuration de la méthode où j'en ai besoin. Aussi, j'ai besoin de changer la var dbname = configuration.GetSection("DB_NAME").Value; pour var dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; pour obtenir la valeur de la appsettings.json. Cela ne correspond pas à la variable d'environnement qui n'est DB_NAME. Si j'ai mis la variable d'environnement Appsettings:Data:DB_NAME et exécuter le code dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; puis-je encore obtenir la valeur de la appsettings.json et non pas de l'environnement.
user20358

Utilisation __ (2 underscores) comme séparateur pour paramètre les variables d'environnement: docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/...
omajid

Dans d'autres langues

Cette page est dans d'autres langues

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