Visto che nell'ultimo mese avrò letto questa domanda
almeno una 10ina di volte sul newsgroup di asp.net, visto che mi si sono
atrofizzate le dita a risponderci, faccio questo post, nella speranza che
qualche d'uno di quelli che posta questo genere di domande prima o poi legga
pure la risposta.
Avere più connessioni è perfettamene lecito, specie quando ci si trova in una
situazione tipo ambiente di sviluppo e server di produzione, dove è quasi sempre
impossibile che i nomi delle risorse e i nomi utenti coincindano.
Come fare allora? Cambiare tutte le volte il web.config? Avere un file per il
server di produzione e uno per lo sviluppo locale?
Troppo dispendioso. Molto più pratico avere una customizzazione tanto del
file web.config che della procedura che recupera la stringa di connessione è
secondo me la cosa più logica.
Vediamo come fare.
Primo passaggio: creare le apposite entry dentro al file web.config, sezione
<connectionString>
<connectionStrings>
<add name="XYZ" connectionString="La_Tua_Stringa_di_Connessione_qui"/>
</connectionStrings>
Detto questo, si può semplicemente creare una banale
funzioncina che recupera l'apposita entry dal file di configurazione a seconda
dell'esigenza, in questo modo:
using System.Web.Configuration;
using System.Diagnostics;
public class Connection
{
public static String GetConnection()
{
String connString = (String)WebConfigurationManager.ConnectionStrings["XYZ"].ConnectionString;
this.getDebugConnectionString(ref connString);
return connString;
}
[ Conditional( "DEBUG" ) ]
private void getDebugConnectionString(ref String connString )
{
connString = (String)WebConfigurationManager.ConnectionStrings["ABC"].ConnectionString;;
}
}
E il gioco è fatto.
Certo, ora che è uscito il Web Deployment Project, questa soluzione è
piuttosto obsoleta, tanto più che lo strumento appena descritto prevede una
funzione per fare il replace di parti di web.config durante il deploy. Ma non ho
ancora avuto modo di provarlo e quindi rimarrò anche io ancora fedele al
mio sistema per qualche tempo ancora.