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:
- O
appsettings.jsoné carregado primeiro e define as configurações padrão. - O
appsettings.{Environment}.json(exemplo:appsettings.Development.json,appsettings.Production.json) é carregado depois e pode sobrescrever as configurações doappsettings.json. Eles herdam tudo o que está dentro doappsettings.json - 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:
appsettings.json(configurações globais)appsettings.{Environment}.json(configurações específicas do ambiente)- User Secrets (se habilitado e em ambiente de desenvolvimento)
- Variáveis de Ambiente (por exemplo,
Logging__LogLevel__Default=Information) - Linha de Comando (por exemplo,
dotnet run --Logging:LogLevel:Default=Trace)