Modifica web.config con il WebConfigurationManager

di Andrea Zani, in .NET2,

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.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese