Estou tentando colocar o meu .NET Núcleo 3.1 app para utilizar variáveis de ambiente, quando em execução no Kubernetes e uma alternativa para appsettings.json
quando a variável de ambiente não definido não.
Eu estou usando isso no meu ConfigureServices
método no arquivo de inicialização
var configuration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var dbname = configuration.GetSection("DB_NAME").Value;
Meu appsettings.json
este arquivo tem
{
"AppSettings": {
"Data": {
"DB_NAME":"test_db"
}
}
}
Estou definindo a variável de ambiente usando o seguinte comando no prompt de comando.
setx DB_NAME ="Kube_test_db"
Quando eu executar o aplicativo no Visual Studio, obtenho o nome do banco de dados como Kube_test_db
. Quando eu excluir a variável de ambiente do Usuário no Windows 10 configurações do sistema e execute o aplicativo novamente no Visual Studio, esta linha retorna null.
var dbname = configuration.GetSection("DB_NAME").Value;
O que é que estou em falta para obter o valor de cair de volta para o que é definido na appsettings.json
arquivo?
var dbname = configuration.GetSection("DB_NAME").Value;
paravar dbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value;
para obter o valor da appsettings.json. Isto não coincidir com a variável de ambiente que é sóDB_NAME
. Se eu colocar a variável de ambiente comoAppsettings:Data:DB_NAME
e executar o código comodbname = configuration.GetSection("Appsettings:Data:DB_NAME").Value;
em seguida, eu ainda obter o valor da appsettings.json e não do ambiente.