2011-12-27 9 views
5

mam aplikację internetową w VS2010 z web.config jak poniżej:Web.Debug.config nie przetwarza podstawienie

... 
<configuration> 
    <connectionStrings> 
    <add name="ApplicationServices" 
     connectionString="data source=MyProdDb;Initial Catalog=MyCat;User Id=MyUser;Password=MyPass;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
... 

i Web.Debug.config tak:

... 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
     <add name="ApplicationServices" 
      connectionString="data source=MyDevDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
    </connectionStrings> 
... 

Projekt jest skonfigurowany tak, aby utworzyć kompilację debugowania, a gdy uruchomię go w debugerze, otrzymam MyProdDb zamiast MyDevDb

Czego mi brakuje?

+0

Czy publikujesz tę stronę, czy ściśle mówiąc, kompilujesz i uruchamiasz? –

+0

To dlatego, że masz "MyProdDb" na swoim web.config ??!? –

+3

Niestety, debugger tego nie robi. – SLaks

Odpowiedz

2

Jak już mówiono, wersje web.config są stosowane tylko w czasie publikowania (MSDeploy). Normalny sposób, w jaki można to zrobić, to mieć konfigurację "Debugowanie" w rzeczywistym pliku web.config i wprowadzić zmiany w tym dla każdego ze scenariuszy wdrożenia, które posiadasz.

+0

Dzięki, zrobię to i to rozwiąże problem. Zastanawiam się, do czego służy Web.Debug.config, ponieważ Web.Release.config jest jedynym wykorzystywanym w tym przepływie pracy. Nie widziałem konfiguracji, w których chciałoby się opublikować ustawienia debugowania z komputera PC na zewnętrzny serwer (domyślam się, że można go wykorzystać do opublikowania w QA, ale nie widziałem, żeby to było robione w ten sposób). –

+0

Naprawdę powodem, dla którego możesz chcieć używać wielokrotności, jest jeden z następujących scenariuszy: Masz wiele środowisk wdrażania (Test, Akceptacja, Produkcja), musisz wdrożyć wersję "debugowania" w innym środowisku, aby zdiagnozować problem (być może debugowanie oznacza mają niestandardowe błędy lub coś w tym stylu) –

+0

To już nie jest prawda, z aktualizacją od zespołu Scotta Hanselmana. Zobacz moją dodatkową odpowiedź. –

3

Czego mi brakuje?

Brakuje ci faktu, że transformacja web.config występuje tylko podczas wdrażania. Jeśli nie publikujesz swojej aplikacji internetowej, nie możesz spodziewać się żadnej transformacji. Jeśli po prostu uruchomisz swoją witrynę lokalnie, naciskając F5, nie nastąpi żadna transformacja. Dzieje się tak tylko wtedy, gdy publikujesz aplikację, w której dokonywana jest transformacja.

+0

OK Rozumiem ... choć muszę powiedzieć, że wydaje się to bardzo niefortunnym wyborem. –

+0

FYI, nie jest już prawdą (z dodatkiem od zespołu Scotta Hanselmana). Zobacz moją nową odpowiedź. –

0

Transformacje Web.config są przetwarzane tylko w czasie publikowania. Podczas debugowania (nawet w trybie zwolnienia) używany jest podstawowy plik Web.config.

Powiązane problemy