O AppSettings.json

O AppSettings.json do .NET Core melhorou muito a forma de configurar aplicativos, deixando para trás o complicado XML do web.config. Se você mexeu nas antigas versões do .NET, sabe bem das dificuldades com as tags e hierarquias do web.config.

Agora, estamos no mundo do .NET Core usando JSON. E quando cria um site em ASP.NET Core, o appsettings.json já vem junto. As configurações do web.config agora estão nesse novo arquivo.

No começo do ASP.NET Core, as configurações estavam no Startup.cs. Hoje, tudo está em WebHost.CreateDefaultBuilder(args) no Program.cs.

Detalhes Importantes

Ao criar a configuração no WebHost, o valor env.EnvironmentName pega a variável de ambiente ASPNETCORE_ENVIRONMENT. Você pode mudar isso no arquivo launchSettings.json ou no ambiente.

No modo "Desenvolvimento", os User Secrets ajudam a proteger dados sensíveis.

Ordem das Configurações

O AppSettings segue uma ordem:

  1. Primeiro o appsettings.json na raiz do projeto.
  2. Depois, mistura com .{VARIAVEL_DE_AMBIENTE}.json.
  3. Adiciona User Secrets.
  4. Depois vêm as variáveis de ambiente.
  5. E por fim, os argumentos de linha de comando.

Essa ordem não muda.

Hierarquia

O AppSettings permite ter configurações diferentes para cada ambiente.

User Secrets

Os User Secrets protegem dados importantes.

Configurando User Secrets

Para configurar, no Visual Studio, clique com o botão direito no projeto e escolha "Manage User Secrets". O arquivo fica em %USERPROFILE%\AppData\Roaming\Microsoft\UserSecrets\.

Usar em vários projetos

Para usar o mesmo User Secrets em outros projetos, adicione <UserSecretsId>id</UserSecretsId> no csproj.

Variáveis de Ambiente

O ASP.NET Core usa ASPNETCORE_ENVIRONMENT para definir o ambiente, que pode ser Development, Staging ou Production.

No Linux, preste atenção, ele não considera maiúsculas como Windows e Mac.

No Visual Studio, altere nas propriedades do projeto > Debug.

No Docker, use Dockerfile e Compose para ajustar variáveis.

Azure AppService

No Azure AppService, configure em App Services > Seu App Service > Configuration.

Alterando Configurações Intermediárias

No appsettings.json, temos subníveis de configuração.

Para Docker, use dois pontos :.

Dockerfile

ENV ApplicationSettings:OneMoreLevel:3rdLevel: "Changed!"

Azure AppService

No Azure AppService, as regras são:

Windows

Use dois pontos :.

Linux

Use underline duplo __.

Extras

No Azure AppService, veja variáveis de ambiente pelo Kudu: AppService > Seu App Service > Advanced Tools > Go.

Conclusão

Espero que isso ajude a entender um pouco mais sobre como configurar o .NET Core.

Referências