Skip to main content

IConfiguration | CSharp

  • IConfiguration | CSharp

  • Ordem de adição dos providers. Cada provider sobrescreve o anterior
Ordem de adiçãoProvider
1appsettings.json
2appsettings.{Environment}.json
3User Secrets (Development)
4Variáveis de ambiente
5Argumentos de linha de comando

  • IConfiguration é populado por várias fontes de dados

alt text

Aqui está uma documentação direta ao ponto sobre o uso de configuration["AppSettings:ConnectionString"] no .NET.


Acessando Configurações com IConfiguration no .NET

Documentação objetiva

🎯 O que é configuration["AppSettings:ConnectionString"]?

É a forma de ler um valor de configuração usando a interface IConfiguration, acessando uma chave dentro de uma seção do arquivo appsettings.json (ou outro provider).

A sintaxe usa : para navegar por seções.


📁 Estrutura esperada no appsettings.json

{
"AppSettings": {
"ConnectionString": "Server=localhost;Database=MeuDB;User Id=sa;Password=123;"
}
}

🔍 Como acessar o valor

var connectionString = configuration["AppSettings:ConnectionString"];

O .NET interpreta isso como:

  • Seção: AppSettings
  • Chave: ConnectionString

Retorno: string com o conteúdo da configuração.


📝 Alternativas equivalentes

Via GetSection

var conn = configuration.GetSection("AppSettings").GetValue<string>("ConnectionString");

Via objeto tipado (Options Pattern)

public class AppSettings
{
public string ConnectionString { get; set; }
}

// Program.cs ou Startup
services.Configure<AppSettings>(configuration.GetSection("AppSettings"));

Leitura:

var settings = serviceProvider.GetRequiredService<IOptions<AppSettings>>().Value;
var conn = settings.ConnectionString;

📌 Principais Configuration Providers do .NET

JSON files provider

Lê arquivos .json, como:

  • appsettings.json
  • appsettings.Development.json
builder.Configuration.AddJsonFile("appsettings.json");

Environment Variables provider

Lê variáveis de ambiente do sistema.

builder.Configuration.AddEnvironmentVariables();

Command-line arguments provider

Lê parâmetros passados na execução do app.

dotnet run --AppSettings:Port=8080
builder.Configuration.AddCommandLine(args);

User Secrets provider (somente desenvolvimento)

Armazena segredos localmente, fora do repositório.

builder.Configuration.AddUserSecrets<Startup>();

INI files provider

Lê arquivos .ini.

builder.Configuration.AddIniFile("config.ini");

XML files provider

Lê arquivos .xml.

builder.Configuration.AddXmlFile("config.xml");

In-memory provider

Configura dados diretamente na memória.

builder.Configuration.AddInMemoryCollection(dict);

Azure Key Vault provider

Lê segredos armazenados no Azure Key Vault.

builder.Configuration.AddAzureKeyVault(...);

Azure App Configuration provider

Lê configurações centralizadas no Azure App Config.

builder.Configuration.AddAzureAppConfiguration(...);

File provider customizado

Lê dados de qualquer fonte personalizada (arquivo, API, DB), implementando:

class MyProvider : ConfigurationProvider {}
class MySource : IConfigurationSource {}

Todos os providers são combinados

O .NET mescla os providers na ordem em que são adicionados. O último provider sobrescreve valores dos anteriores.