Tra le novità portate in dote da ASP.NET Core non poteva mancare una piccola rivoluzione dal punto di vista della configurazione.
Sicuramente ci saremo resi conto più volte di come il meccanismo degli AppSettings presente in ASP.NET abbia notevoli limiti, primo tra tutti il fatto che si tratti di una struttura piatta, basata sul concetto semplicistico di coppie chiave-valore, che non consente facilmente la scrittura di impostazioni strutturate. Sebbene sia possibile definire una sezione personalizzata in web.config, il codice resta comunque piuttosto scomodo.
In ASP.NET Core, la sezione AppSettings di web.config lascia il posto ad un file appsettings.json, all'interno del quale possiamo memorizzare dati in forma gerarchica, sfruttando il formato JSON. Il codice in basso, oltre ai setting per il logging, include un esempio di impostazioni per accedere a un web service remoto.
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "myRemoteService": { "url": "http://service.com", "username": "user", "password": "pass" } }
Quest'ultima può essere rappresentata da una classe come la seguente:
public class WebServiceSettings { public string Url { get; set; } public string Username { get; set; } public string Password { get; set; } }
che possiamo poi referenziare all'interno di un controller grazie all'interfaccia IOptions<T>:
public HomeController(IOptions<WebServiceSettings> config) { _settings = config.Value; }
Affinché il Runtime sappia come istanziare WebServiceSettings, però, dobbiamo registrare un nuovo servizio sul container di ASP.NET Core, aggiungendo queste righe al metodo ConfigureServices in Startup.cs:
public void ConfigureServices(IServiceCollection services) { // ... altro codice ... services.AddOptions(); services.Configure<WebServiceSettings>( this.Configuration.GetSection("myRemoteService")); }
Il metodo AddOptions è quello che registra il servizio IOptions<T> che abbiamo sfruttato nel controller precedente. Il secondo metodo, invece, serve ad associare la particolare classe WebServiceSettings alla sezione myRemoteService di appconfig.json.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Point-in-time restore con gli Azure Storage Blob
The .NET 5 & C# 9 Show
Modificare il layout della paginazione del controllo CarouselView in Xamarin Forms
Rendering di raw HTML in Blazor
Le novità di ASP.NET Core 5
Ottimizzare la compilazione di applicazioni Angular con il Fast and Loose Incremental Checking di TypeScript
Eseguire integration test di un progetto ASP.NET Core
Blazor e il pattern Model-View-ViewModel
Azure loves Docker: non solo AKS
Ecco .NET 5: l'alba di una nuova era per lo sviluppatore .NET
Usare i Top Level statement in C#
SSL Certificates for everyone on Azure
I più letti di oggi
- Modificare la modalità di esecuzione delle query con Include in Entity Framework Core 5
- Le novità di Entity Framework Core 5
- Autenticazione con JWT Token e ASP.NET Core Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Creare un web server locale con LiveReload
- Effettuare l'upload di un file da Blazor su Azure Blob Storage
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Tracciabilità dei work item nel ciclo di vita del software con Azure DevOps