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.
nostromo <nostromo> ha scritto:
usare con parsimoni sima sembra davvero molto utile ,mi vengono inmente alcune idee
Sì, pure a me, come modificare da una pagina di amministrazione le configurazioni di tutto il sito. Ma non la vedo come una cosa da utilizzare ad ogni richiesta di pagina
Ciao
solita idea è venuta a me
ciao marco
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download 

usare con parsimoni si :) ma sembra davvero molto utile ,mi vengono inmente alcune idee :)
ciao marco
Modificato da nostromo il 14 settembre 2005 01.27 -
Continua »»» | Rispondi »»»