C# Asp.net MVC Core utilizzo del file appsettings.json

Articolo introduttivo all'utilizzo del file di configurazione appsettings.json.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come utilizzare il file appsettings.json nelle applicazioni .Net, in particolare alla tecnologia Asp.Net Core MVC.
Nella precedente tecnologia web di Microsoft, in particolar modo Asp.Net, il file web.config permetteva tramite apposite sezioni, di impostare alcune informazioni che potevano essere utilizzate nell’applicazione web.
In particolar modo parametri che potevano tornare utile per effettuare determinate operazioni in base al valore inserito, sollevando il programmatore o comunque un profilo con buone conoscenze informatiche ad intervenire sul codice o sulla base dati.
Con la nuova tecnologia Asp.Net MVC Core, il file di configurazione è appsettings.json con il quale è possibile inserire i vari parametri.

Creazione del progetto

Si crea un nuovo progetto di tipo Asp.Net Core MVC con l’ultima versione del Framework, nel momento in cui stiamo scrivendo è la 5, utilizzando il linguaggio di programmazione C#.
L’applicazione che andremo a realizzare è molto semplice, servirà  a capire come rilevare i dati da un file di configurazione, per gestirli nel sito. Nessun accesso al database e nessun controllo da inserire.
Il codice utilizzato si può utilizzare anche con le versioni precedenti.

L'ambiente di sviluppo utilizzato è Visual Studio 2019 Community.

Stesura del codice

Nel file di configurazione, in particolar modo il file “appsettings.json” inseriremo una voce di parametro, con al suo interno altri parametri.
Dopo il parametro “AllowedHosts” inseriamo il seguente riferimento:

"Parametri": {
"ResponsabileArea": "Luigi",
"Direttore": "Emanuele",
"ResponsabilePersonale": "Olga",
"Aree": [ "Tenica", "Amministrazione", "Personale" ]
}


Come si vede nel precedente frammento di codice, abbiamo un elemento denominato “Parametri” con al suo interno tre parametri, di cui uno di tipo lista.
Qui di seguito si riporta il codice completo di appsettings contenente i valori di default che si trovano quando si crea un nuovo progetto.

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Parametri": {
"ResponsabileArea": "Luigi",
"Direttore": "Emanuele",
"ResponsabilePersonale": "Olga",
"Aree": [ "Tenica", "Amministrazione", "Personale" ]
}
}

Ora vediamo come leggere tali valori dall’applicazione web.
Nel file e classe “Startup” si trova un evento che permette la gestione della configurazione appena viene avviata l’applicazione web, questo è l’evento “ConfigureServices” . In questo evento vengono rilevate le varie informazioni presenti nel file di configurazione.
Tramtie l’interfaccia “IConfiguration” rileviamo con il metodo “GetValue” il valore.
Qui di seguito si riporta il frammento delle suddette operazioni

C#
public void ConfigureServices(IServiceCollection services)
{
string ValoreResponsabileArea = Configuration.GetValue<string>("Parametri:ResponsabileArea");
string ValoreDirettore = Configuration.GetValue<string>("Parametri:Direttore");
string ValoreResponsabilePersonale = Configuration.GetValue<string>("Parametri:ResponsabilePersonale");
services.AddControllersWithViews();
}

Come si è visto nel codice precedente, vengono rilevati i valori dei singoli ruoli (ReponsabileArea, Direttore e ResponsabilePersonale ) o meglio parametri tramite il metodo GetValue.

Creazione della classe per il mapping

Una tecnica molto usata è quella di creare una classe con le proprietà che mappano ossia corrispondono ai nomi dei parametri presenti nel file di configurazione.
Nella cartella “Model” si crea una nuova classe denominata “Parametri”, questa avrà 3 proprietà di tipo string, ed una di tipo list string che farà riferimento al parametro nel file di configurazione delle aree di tipo array string.
Qui di seguito le suddette operazioni della classe.

C#
public class Parametri
{
public string ResponsabileArea { get; set; }
public string Direttore { get; set; }
public string ResponsabilePersonale { get; set; }
public List<string> Aree { get; set; }
}

Per utilizzare questa classe nell’evento per “ConfigureServices” dobbiamo utilizzare il metodo “GetSection” passando come valore il nome del parametro principale che racchiude i sotto parametri e poi il metodo “Get” passando come parametro la classe appena creata.
Qui di seguito si riporta il frammento di codice delle suddette operazioni.

C#
public void ConfigureServices(IServiceCollection services)
{
Parametri parametri = Configuration.GetSection("Parametri").Get<Parametri>();
services.AddControllersWithViews();
}

Nel caso che invece si vuole utilizzare il valore del parametro passandolo in una pagina, dovremmo rendere la proprietà di tipo “static”. Modificando la precedente classe, cambiando la classe “Direttore” in static possiamo utilizzarla anche nella pagina web index.

Qui di seguito la modifica della classe “Parametri”.

C#
public class Parametri
{
public string ResponsabileArea { get; set; }
public static string Direttore { get; set; }
public string ResponsabilePersonale { get; set; }
public List<string> Aree { get; set; }
}


Di seguito la valorizzazione della classe con i valori presenti nel file di configurazione.

C#
public void ConfigureServices(IServiceCollection services)
{
Parametri parametri = Configuration.GetSection("Parametri").Get<Parametri>();
services.AddControllersWithViews();
}

Nell’evento “Index” del controller “Home”, passiamo il valore della proprietà “Direttore” di tipo static alla “View” tramite il ViewBag.
Qui di seguito il frammento di codice delle suddette operazioni.

HomeController.cs
public IActionResult Index()
{
ViewBag.Direttore = Parametri.Direttore;
return View();
}

Nella view che viene aperta come pagina iniziale, che è la “Index.cshtml” scriviamo il codice per visualizzare a video il valore presente nella proprietà “Direttore”.
Di seguito tali operazioni.

Index.cshtml
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Pagina esempio</h1>
<p>Il nome del direttore :  @ViewBag.Direttore  .</p>
</div>

Conclusioni

L’articolo ha voluto fornire al lettore le basi della gestione dei file di configurazione, in particolare con la nuova tecnologia Asp.Net Core MVC del file Appsettings.
Con la nuova tecnologia i parametri che una volta venivano utilizzati nel file “web.config” sono utilizzati tramite file “json” permettendo una diversa gestione.
Con il Framework 5 sono state apportate notevoli cambiamenti, che permettono uno sviluppo più potente ed al tempo stesso flessibile.
I parametri utilizzati nei file di configurazion, permettono anche ad utenti con poca dimestichezza con le tecnologie di fornire informazioni all’applicativo per eseguire determinate operazioni.