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
I più letti di oggi
- Beta 1 di VS 2005 Enterprise Architect
- Point-in-time restore con gli Azure Storage Blob
- Focus dei tag input con HTML5
- Il nuovo tag nav in HTML5
- Evitare la modalità di risparmio energetico in una Windows Store app
- Real Code Day 4.0: costruire applicazioni reali - Firenze
- AI&ML Conference 2019 - Milano
- Mono 0.12: verso una nuova implementazione di ASP.NET