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.