Múltiplos Ambientes em appsettings.json

A gestão de diferentes ambientes de desenvolvimento, teste e produção no .NET Core pode ser facilitada com o uso adequado do arquivo appsettings.json.

Em projetos .NET Core, é comum ter um arquivo de configuração appsettings.json separado para cada ambiente, como appsettings.Development.json, appsettings.Staging.json e appsettings.Production.json. A configuração correta ajuda a manter a organização e a segurança, evitando a exposição de dados sensíveis e facilitando o processo de deployment.

Uso de appsettings por ambiente

Para que o .NET Core carregue automaticamente o arquivo de configuração correspondente ao ambiente atual, é necessário definir a variável de ambiente ASPNETCORE_ENVIRONMENT. O valor desta variável determina qual arquivo appsettings será carregado além do appsettings.json padrão.

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.;Database=MyApp;Trusted_Connection=True;"
  }
}

Em ambiente de desenvolvimento, você pode ter um appsettings.Development.json com strings de conexão específicas para o banco de dados de desenvolvimento.

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=devServer;Database=MyAppDev;User Id=devUser;Password=devPassword;"
  }
}

Configuração em tempo de execução

O .NET Core permite que você sobrescreva as configurações em tempo de execução, utilizando variáveis de ambiente, o que é especialmente útil em ambientes de containerização e plataformas como o Azure ou AWS.

Acessando appsettings em código

public class Startup
{
    public Startup(IWebHostEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public IConfiguration Configuration { get; }
}

Boas práticas

É importante nunca armazenar dados sensíveis, como strings de conexão com senhas, em repositórios de código fonte. Utilize mecanismos seguros como secret managers ou variáveis de ambiente criptografadas para essas informações.

Resumo

Compreender e aplicar corretamente as configurações de appsettings.json para múltiplos ambientes é fundamental para a segurança e eficiência de aplicações .NET Core. A separação clara de configurações por ambiente facilita o gerenciamento e o deployment de aplicações.