Come si è già visto nello script #475 si può creare una nuova sezione nel web.config, o anche a livello di macchina con machine.config, utilizzando le classi contenute nel namespace System.Configuration o System.Web.Configuration, che implementano l'interfaccia IconfigurationSectionHandler.
E' anche possibile creare un nostro section handler mediante la creazione di una classe che implementi tale interfaccia, che richiede un sola funzione "Create".
Questa funzione restituisce un tipo object contenente le nostre informazioni allo stack chiamante, attraverso il metodo ConfigurationSettings.GetConfig.
Nell'esempio di seguito creiamo una nuova sezione MySection che restituisce un tipo MyApplication, contenente titolo e colore di sfondo da applicare alle nostre pagine.
namespace ASPItaliaScripts { public class MySectionHandler:IConfigurationSectionHandler { public object Create(object parent, object configContext, XmlNode section) { MyApplication info=new MyApplication(); //per ogni attributo contenuto nel nodo 'MySection' foreach (XmlAttribute att in section.Attributes) { //se è un attributo non riconosciuto genero un errore indicante //che non è valido switch (att.Name) { case "title": info.Title=att.InnerText; break; case "bgcolor": info.BgColor=att.InnerText; break; default: throw new ConfigurationException(att.Name +" attribute not valid",section); } } return info; } } public class MyApplication { public string Title=""; public string BgColor="#FFFFFF"; } }
Il codice è abbastanza commentato. Il metodo Create passa un oggetto XmlNode, il nodo "MySection", che possiamo manipolare con gli strumenti messi a disposizione dal framework. Qual'ora avessimo più web.config all'interno di un'applicazione web, la funzione create verrà richiamata tante volte quanto il numero dei files di configurazione e la variabile parent sarà valorizzata con l'oggetto restituito dal metodo create del web.config padre.
Nell'allegato c'è il codice completo e un esempio di come utilizzarlo.
Per lo script #475 - Più sezioni di configurazione attraverso il nodo
https://www.aspitalia.com/liste/usag/script.aspx?ID=475
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare la nostra produttività con ASP.NET Core e live reload
Creare API GraphQL con ASP.NET Core e HotChocolate
Eseguire lo shutdown pulito di un'applicazione ASP.NET Core
Correlare i log in un'applicazione distribuita con ASP.NET Core
Eseguire integration test di un progetto ASP.NET Core
.NET Conference Italia 2020
Effettuare il tracing asincrono delle chiamate a un'applicazione ASP.NET Core
L'agenda di #netconfit è online => https://aspit.co/netconfit-20 3 track, tante sessioni e una keynote speciale di @shanselman per la più importante conferenza in lingua italiana su .NET! Vi aspettiamo il 24/11. Iscrizioni sempre aperte! #donet #aspnet #netconf
Eseguire del codice personalizzato al click di una checkbox in Blazor
Restituire il correlation ID in caso di errore in ASP.NET Core Web API
Rigenerare il database negli integration test di ASP.NET Core