.NET Core 3.1 aplicación para usar las variables de entorno que se ejecuta en Kubernetes y el retroceso a appsettings.json cuando la variable de entorno no se establece

0

Pregunta

Estoy tratando de conseguir mi .NET Core 3.1 aplicación para usar las variables de entorno cuando se ejecuta en Kubernetes y el retroceso a appsettings.json cuando la variable de entorno no se establece allí.

Estoy usando esto en mi ConfigureServices método en el archivo de inicio

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

Mi appsettings.json el archivo tiene este

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

Estoy configurando la variable de entorno mediante el comando siguiente en el símbolo del sistema.

setx DB_NAME ="Kube_test_db"

Cuando ejecuto la aplicación en Visual Studio, me sale el nombre de base como Kube_test_db. Cuando puedo eliminar la variable de entorno de Usuario en Windows 10 configuración del sistema y ejecute de nuevo la aplicación en Visual Studio, esta línea devuelve null.

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

Lo que me estoy perdiendo para obtener el valor para volver a caer a lo que está definido en el appsettings.json archivo?

1

Mejor respuesta

0

Uso .AddJsonFile.

Y hacerlo antes de llamar .AddEnvironmentVariables(). Así:

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

Yo no se hostingEnvironment en el método configure (que me falta. También, tendré que cambiar el var dbname = configuration.GetSection("DB_NAME").Value; a var dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; para obtener el valor de la appsettings.json. Esto no coincide con la variable de entorno que es sólo DB_NAME. Si pongo la variable de entorno como Appsettings:Data:DB_NAME y ejecutar el código como dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value; entonces yo todavía obtener el valor de la appsettings.json y no del ambiente.
user20358

Uso __ (2 guiones bajos) como el separador de ajuste de las variables de entorno: docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/...
omajid

En otros idiomas

Esta página está en otros idiomas

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