Lettura stringa di connessione

in Programmazione

Lettura stringa di connessione in .NET Core

Reading Time: 2 minutes

Nello sviluppo di un’applicazione console si rende spesso necessario l’utilizzo di un file di configurazione. Nel framework .net tradizionale la configurazione dell’applicazione avviene attraverso il web.config, che ha una struttura di tipo xml. In dotnet Core il file di configurazione è stato sostituito da un file in formato json, generalmente chiamato appsettings.json.

In dotnet core è possibile utilizzare ConfigurationBuilder per poter leggere il file di configurazione (in formato json) ed eventualmente creare da esso un oggetto tipizzato. In particolare, questo tipo di approccio, può essere utilizzato a partire da NET Core 2.1 anche se può essere utilizzato anche con la versione 2.0.

Supponendo che il file di configurazione, in formato json, della nostra applicazione sia nel seguente formato:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyApplicationDatabase;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "MySettings": {
    "AccountName": "myaccount",
    "ApiKey": "3ut3902ut32ut9238uy932u902421414141"
  }
}

dove viene definita una stringa di connessione denominata DefaultConnection e una sezione denominata MySettings. Nel seguito di questo posto effettuerò la mappatura di questa sezione con i campi di una classe.

Di seguito è riportato un esempio di lettura di un file di configurazione:



var builder = new ConfigurationBuilder()
               .SetBasePath(Directory.GetCurrentDirectory())
               .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
               .AddUserSecrets<Program>()
               .AddEnvironmentVariables(); 

Da notare l’utilizzo dei due metodi di ConfigurationBuilder:

  • AddUserSecrets: introdotto a partire dalla versione 2.0 consente l’archiviazione sicura dei dati sensibili durante la fase di sviluppo delle applicazioni
  • AddEnviromentVariables: che consente di leggere le variabili d’ambiente all’interno della applicazione

Definendo, ad esempio, una classe denominata MySettingsConfig :

public class MySettingsConfig
{
  public string AccountName { get; set; }
  public string ApiKey { get; set; }
  public string ApiSecret { get; set; }
}

è possibile effettuare il binding della configurazione, letta dal file di configurazione, nel modo seguente:


IConfigurationRoot configuration = builder.Build();
var mySettingsConfig = new MySettingsConfig();
configuration.GetSection("MySettings").Bind(mySettingsConfig);

Il mapping delle proprietà provienti dal file di configurazione con le proprietà della classe MySettingsConfig viene effettuato mediante il metodo Bind.

Utilizzando lConfigurationRoot è possibile effettuare la lettura dei del file di configuraizone in maniera semplice e rapida. Questo tipo di approccio è spesso utlizzato nello sviluppo di applicazioni di tipo console.