Possiedo un progetto di applicazione Web ASP.NET che si collega a un database remoto tramite Entity Framework. Durante il debug (ad esempio, l'esecuzione del progetto sul mio computer locale), l'indirizzo IP del database è diverso rispetto al momento del rilascio (ad esempio dopo aver caricato il progetto sul mio server web e averlo eseguito dal browser). Fino ad ora ho sempre modificato manualmente la stringa di connessione del database nel file Web.config per passare tra i due (in pratica ho dovuto stringere le stringhe, una chiamata "Debug" e una "Release" e ho appena scambiato i nomi ogni volta che ho distribuito).Web.config Build vs Release transform non funziona
Ora ho appena notato che dovrebbe essere possibile farlo avvenire automaticamente tramite lo Web.config Transformation Syntax dove si inserisce la stringa di connessione modificata nella versione Web.Release.config e dovrebbe quindi utilizzarlo quando la DLL viene creata in Configurazione di rilascio .
Tuttavia non sembra funzionare per me ...
Ecco la parte rilevante del mio file web.config regolare (che detiene la stringa di connessione di debug per l'uso locale):
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<!-- Debug connection string. Release connection string is in Web.Release.config file -->
<add name="DatabaseEntities" connectionString="A" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Ecco il file Web.Release.config, che secondo gli esempi dovrebbe sostituire la stringa di connessione 'DatabaseEntities' "a" con "B" se la DLL è in modalità di rilascio:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- Replace the DatabaseEntities connection string with the Release version (local IP address) -->
<connectionStrings>
<add name="DatabaseEntities"
connectionString="B"
xdt:Transform="Replace" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
(Ovviamente "A" e "B" sono solo segnaposto per le mie stringhe di connessione reali)
Quando eseguo il debug dell'applicazione (ad es. basta premere F5) viene utilizzato il web.config predefinito e posso accedere al database. Quindi cambio la configurazione di build in Release tramite Configuration Manager. Tutti i progetti nella soluzione sono impostati su Rilascio configurazione. Quindi costruisco la soluzione (solo tramite Build o anche tramite una ricostruzione completa (ad esempio, Pulisci, Ricostruisci)). Carico le DLL appena create sul server web, così come i file Web.config e Web.Release.config, e quando provo ad accedere al database che non riesco, sta ancora tentando di accedere al database tramite l'indirizzo IP di debug e quindi non riesco a trovarlo ...
Sembra che il file Web.Release.config sia completamente ignorato, o almeno la stringa di connessione non viene sostituita.
Cosa sto sbagliando? La sintassi della trasformazione è errata? Non sto creando l'applicazione in modalità di rilascio correttamente?
Grazie per qualsiasi aiuto ...
Questo a volte può essere un po 'complicato, se si ottiene un'impostazione errata non funzionerà. Se puoi aggiungere uno screenshot di Configuration Manager, potremmo essere in grado di vedere qualcosa che hai ignorato. –
Questo post mi ha aiutato: [http://stackoverflow.com/questions/3305096/how-can-i-use-web-debug-config-in-the-built-in-visual-studio-debugger-server] [1] [1]: http://stackoverflow.com/questions/3305096/how-can-i-use-web-debug-config-in-the-built-in-visual-studio -debugger-server –