Skip to main content

AppSettings | Variáveis de Ambiente | CSharp

  • AppSettings | Variáveis de Ambiente | CSharp

//Startup
services.Configure<SendGridSettings>(Configuration.GetSection("SendGridSettings"));

//SendGridSettings

public sealed class SendGridSettings
{
//Precisa estar publica
public string ApiKey { get; set; }
public string FromEmail { get => "bluedesk@inovafarma.com.br"; }

public void AtribuirApiKeyPorAmbiente(EnvironmentHelper env)
{
if (env.ServerEnvironment != ServerEnvironment.Production) return;

ApiKey = Environment.GetEnvironmentVariable("API_KEY_SENDGRID");
}
}

//appsettings.json

"SendGridSettings": {
"ApiKey": ""
}

Sobrescrita de configurações do appSettings

Como Funciona a Sobrescrita de Configurações:

  1. O appsettings.json é carregado primeiro e define as configurações padrão.
  2. O appsettings.{Environment}.json (exemplo: appsettings.Development.json, appsettings.Production.json) é carregado depois e pode sobrescrever as configurações do appsettings.json. Eles herdam tudo o que está dentro do appsettings.json
  3. Variáveis de ambiente e outros provedores de configuração (linha de comando, Azure Key Vault, etc.) podem sobrescrever ainda mais as configurações.

Exemplo de Sobrescrita:

// appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
// appsettings.Development.json
{
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}

Se o ambiente for Development, o valor de "Default" será "Debug", pois o appsettings.Development.json sobrescreve o appsettings.json.

Ordem de Precedência:

  1. appsettings.json (configurações globais)
  2. appsettings.{Environment}.json (configurações específicas do ambiente)
  3. User Secrets (se habilitado e em ambiente de desenvolvimento)
  4. Variáveis de Ambiente (por exemplo, Logging__LogLevel__Default=Information)
  5. Linha de Comando (por exemplo, dotnet run --Logging:LogLevel:Default=Trace)