Una domanda su un forum mi aveva fatto venire in mente un vecchio blog che avevo scritto all'uscita di una delle prime versione di Visual Studio 2005. L'ho ritrovato, era il lontanissimo 6 dicembre del 2003! Da allora sono cambiate un sacco di cose. Il tempo cambia il mondo, i popoli, le singole persone... e non poteva mancare da queste trasformazioni anche l'asp.net 2.0.
Le cose sono parecchio cambiate ad essere sincero. Ora c'è la classe WebConfigurationManager che ci permette di modificare il web.config, o la machine.config della nostra web application.
Vediamo un esempio banale adatto alla risposta al quesito sul forum in cui veniva chiesto se era possibile modificare in modo globale il theme di una web.application:
<%@ Import Namespace="System.Configuration" %> <%@ Import Namespace="System.Web.Configuration" %>
<script runat="server" language="C#"> void Page_Load(object source, EventArgs e) { Configuration config; config = WebConfigurationManager.OpenWebConfiguration("~"); PagesSection p; p = config.GetSection("system.web/pages") as PagesSection; if (p != null) { Response.Write("Trovato: " + p.Theme); p.Theme = "Theme2"; config.Save(); } else Response.Write("Non trovato"); }
La funzione OpenWebConfiguration carica il web.config attuale dalla root della webapplication attuale. Quindi la funzione GetSection prende la sezione di nostro interesse.
Tutto le sezioni sono modificabili, come nell'esempio successivo per la sessionState:
void Page_Load(object source, EventArgs e) { Configuration config; config = WebConfigurationManager.OpenWebConfiguration("~"); SessionStateSection s; s = config.GetSection("system.web/sessionState") as SessionStateSection; if (s != null) { Response.Write("Trovato: " + s.Cookieless.ToString()); s.Cookieless = HttpCookieMode.UseCookies; config.Save(); } else Response.Write("Non trovato");
Anche la sezione della ConnectionStrings è modificabile:
Configuration config; config = WebConfigurationManager.OpenWebConfiguration("~"); ConnectionStringsSection c; c = config.GetSection("connectionStrings") as ConnectionStringsSection; if (c != null) { Response.Write("Trovato: " + c.ConnectionStrings[0]); c.ConnectionStrings[0].ConnectionString += ";"; // riga 1 c.ConnectionStrings.Add(new ConnectionStringSettings("prova","...")); /riga 2 config.Save(); } else Response.Write("Non trovato");
In questo esempio, nella linea di codice contrassegnato con "riga 1" modifichiamo la stringa di connessione presente aggiungendo un punto e virgola. In "riga 2" aggiungiuamo una nuova stringa di connessione di nome "prova".
Un'ultima avvertenza: l'utente aspnet (o quello del vostro server) che elabora le pagine aspnet deve avere i diritti in scrittura sulla directory dov'è presente il web.config, altrimenti l'exception è in agguato. In ultimo: una modifica del web.config fa ripartire l'applicazione con ovvio rallentamento. Usare con parsimonia.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Un po' di benchmark tra Linq, Entity Framework e Nhibernate, il 12 ottobre 2008 alle 14:46
- UrlRewriting con trabocchetti vari, l'11 dicembre 2007 alle 21:00
- Windows Forms - DataGridView e validazione, il 23 settembre 2007 alle 20:08
- ControlParameter e masterpage... bug?, il 23 dicembre 2006 alle 15:58
- Se Visual Studio 2005 non accetta più la tastiera, il 16 dicembre 2006 alle 20:45
- Service Pack 1 di Visual Studio 2005, il 16 dicembre 2006 alle 20:35