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.