Trasformazione di Web.Config in Visual Studio 2010

di Marco De Sanctis, in ASP.NET 4.0,

Tra le novità di Visual Studio 2010, una estremamente utile riguarda la possibilità di gestire differenti file di configurazione grazie a Web Config Transformation, che consiste in un semplice linguaggio di scripting tramite il quale indicare come il file Web.Config che utilizziamo nel nostro ambiente di sviluppo debba essere rielaborato prima di essere distribuito.

Supponiamo ad esempio che la nostra applicazione si interfacci al database Northwind tramite questa stringa di connessione che, come possiamo notare, punta ad un database locale utilizzando l'autenticazione di Windows.

<add name="Northwind"
     connectionString="server=.;database=Northwind;Integrated Security=SSPI"/>

Tipicamente abbiamo diverse impostazioni di questo tipo, che oltre al database possono riguardare log, posta elettronica, pagine di errore personalizzate, e che ogni volta che effettuiamo un deployment completo siamo costretti a modificare manualmente.

Con Visual Studio 2010, se espandiamo il file Web.Config su Solution Explorer possiamo notare la presenza di ulteriori due file, che contengono le trasformazioni necessarie per le configurazioni Debug e Release.


Ovviamente, se la nostra solution dovesse possedere ulteriori configurazioni, ad esempio Test o Staging, è possibile creare le relative trasformazioni selezionando la voce Add Config Transforms dal menu contestuale che si apre su Web.Config.


Il contenuto di questi file è simile ad un normale Web.Config, a parte la dichiarazione di un particolare namespace xml che abilita l'utilizzo dei tag di trasformazione.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
...
</configuration>

Supponiamo allora di voler modificare il Web.Config generato in Release in modo che la stringa di connessione Northwind sia quella relativa al database di produzione. Ciò che possiamo fare è indicarne la trasformazione all'interno del file Web.Release.Config come segue:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="Northwind" 
         connectionString="server=productionServer;database=Northwind;username=test;password=pwd"
         xdt:Locator="Match(name)" xdt:Transform="Replace"/>
  </connectionStrings>
</configuration>

I due nuovi tag xdt:Locator e xdt:Transform consentono di specificare come la trasformazione deve avvenire, e in particolare:

  • xdt:Locator rappresenta la modalità secondo cui deve essere individuata la stringa di connessione da trasformare, nel nostro caso con Match(name) abbiamo indicato che la ricerca deve essere effettuata in base al valore dell'attributo name;
  • xdt:Transform rappresenta invece la trasformazione vera e propria, nel nostro caso abbiamo specificato Replace per indicare che la stringa di connessione Northwind sul file originale dovrà essere sostituita con quella corrente.

L'elenco completo di tutte le funzionalità di questi due tag è disponibile a questo indirizzo:
http://msdn.microsoft.com/en-us/library/dd465326.aspx

Se a questo punto generiamo il pacchetto di installazione (Project -> Build Deployment Package) o effettuiamo la pubblicazione della nostra Web Application (Build -> Publish Web Application) in configurazione Release, al Web.Config originale saranno automaticamente applicate le trasformazioni specificate.

Se pensiamo al fatto che, grazie alle nuove modalità di pubblicazione di Visual Studio 2010, è possibile fare in modo che avvenga in automatico anche l'upload del pacchetto di installazione sul server in hosting e la registrazione in IIS, ci possiamo subito rendere conto di come sia potente questo nuovo strumento, grazie al quale possiamo a tutti gli effetti gestire diversi scenari di deployment con pochissimi click del mouse.

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.

Approfondimenti

I più letti di oggi