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
Definire la durata dell'output cache in ASP.NET Core 7
Sfruttare i tag nell'output cache di ASP.NET Core 7
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Cache policy su route groups di Minimal API in ASP.NET Core 7
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Utilizzare parametri a livello di controller nel routing di ASP.NET Core
Gestire tipi complessi in query string grazie a IParsable in ASP.NET Core 7.0
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Sfruttare l'output cache di ASP.NET Core 7 con i controller
Gestire la query string nell'output cache di ASP.NET Core