Ecco lo scenario: ho più sviluppatori su un progetto asp.net mvc 4. Ogni sviluppatore ha un database locale. Il sistema di controllo del codice sorgente è TFS a http://tfs.visualstudio.com. Utilizziamo siti Web di Azure per ospitare il sito. Abbiamo anche configurato siti Web di Azure per la distribuzione continua.Gestione delle stringhe di connessione nell'applicazione controllata da origine che viene continuamente distribuita nei siti Web di Azure
Il sistema di controllo del codice sorgente potrebbe essere git, mercuriale, TFS, ecc. Onestamente, non credo che importi.
La mia domanda è come realizzare queste tre cose:
- Ogni sviluppatore ha la propria stringa di/connessione (s) a livello locale (senza essere in controllo del codice sorgente)
- Azure ha la propria stringa di connessione (s) (senza essere nel controllo del codice sorgente)
- Source Control non mostra alcuna informazione di connessione
- La capacità per ogni sviluppatore di F5 ed eseguire/debug/testare l'app localmente.
Abbiamo raggiunto il n. 1 aggiungendo le nostre singole stringhe di connessione al nostro machine.config in modo che non ci siano conflitti tra le impostazioni della workstation dello sviluppatore.
Inizialmente ho rimosso la sezione connectionstrings da web.config. Nel sito Web di Azure (utilizzando il portale di gestione, in Configure), ho configurato le stringhe di connessione e dopo aver visto un video di Scott Hanselman avevo l'impressione che queste sarebbero state unite dinamicamente nel mio web.config dopo l'implementazione, ma ciò non sembra accadere. Ogni volta che vado a qualsiasi pagina che colpisce il db, ricevo un errore che dice che non riesco a trovare la stringa di connessione (o qualche altro errore db relativo alla connessione)
Se inserisco la stringa di connessione di Azure direttamente in web.config Le cose funzionano su Azure, ma i dettagli della connessione sono visibili nel controllo del codice sorgente a tutti.
Dopo aver letto altri post di Scott e David Ebbo, sembra che potrei inserire una stringa di connessione vuota in web.config (con il nome corretto) e quindi Azure sovrascriverà correttamente i valori. Dovrei quindi avere gli sviluppatori che mettono le loro stringhe di connessione nel loro web.debug.config e quindi installano il plugin Slow Cheetah in modo che possano F5 e testare localmente. Dovrebbero anche non controllare il web.debug.config nel controllo del codice sorgente. (Non così facile con TFS) Questo sembra un kludge pesantemente oneroso, che è destinato a fallire da qualche parte lungo la linea.
Devo credere che questo non sia un problema raro. Come fanno gli altri team a raggiungere questo obiettivo?
Che ancora non mantiene le informazioni sulla connessione fuori dal controllo del codice sorgente. Inoltre, non posso per la vita di me capire come ottenere un lento ghepardo per prendere ciò che c'è nel mio web.debug.config e trasformare il mio web.config quando premo F5. (Non accade nulla, e onestamente, la documentazione del sito Web è scadente) – SumOfDavid
Mantengo la connessione locale.machinename.config fuori dal controllo del codice sorgente. Le connessioni release/staging si trovano nella trasformazione web.config in cui sono crittografate. –