8

Obecnie mogę łatwo skonfigurować transformację Web.config na podstawie konfiguracji kompilacji, np. użyj connectionString=server;.. dla Debug i connectionString=./SQLExpress;.. dla Release.Czy można powiązać transformację Web.config z profilem publikowania?

Ale czy można przeprowadzić transformację Web.config w oparciu o profil publikowania w Internecie? To znaczy. użyć connectionString=server1;.. dla profilu Server1 i connectionString=server2;.. dla Server2?

Odpowiedz

0

Uważam, że profile publikowania są niezależne od profili kompilacji, co jest odrobiną wstydu, ponieważ można łatwo przypadkowo wdrożyć konfigurację debugowania na serwerach produkcyjnych.

Jednak jeśli używasz MSDeploy, istnieją sposoby na modyfikowanie pliku web.config. Aby uzyskać więcej informacji, patrz MSDeploy - Changing Connection string parameter after deploying the package.

0

Może być nieco inny sposób zrobienia tego.

Na serwerach produkcyjnych utwórz niepotrzebny wpis dla customdb w pliku c: \ windows \ system32 \ drivers \ etc \ hosts na każdej z maszyn produkcyjnych. Każdy wskazuje na bazę danych, z której ma korzystać ta maszyna. Następnie wystarczy wskazać połączenie connectionString = customdb; dla wszystkich serwerów produkcyjnych.

Jedynym minusem tego jest to, że potrzebujesz dostępu do pliku hosts i wymagałoby to użycia bazy danych.

Nadzieja to pomaga

+0

Interesujące. Kolejną wadą jest to, że nie można (łatwo) sterować wersją pliku hostów, ponieważ będzie ona zawierała ustawienia specyficzne dla urządzenia i zwiększa złożoność procesu wdrażania, wymagając dostępu do zapisu ścieżek systemowych, których zwykle należy unikać. – Abel

5

Trzymamy całą konfigurację specyficzną maszyna/profilu w osobnych plikach konfiguracyjnych, a następnie użyć configSource celu włączenia ich jak tak ...

<connectionStrings configSource="cstrings.config"/> 

ten sposób Web.config jest taka sama i nie wymaga żadnych transformacji. Robimy to dla ciągów połączeń, ustawień smtp i ustawień aplikacji.

Web.config kontroli wersji My i „maszyna specyficzny” pliki takie jak cstrings.config.production, cstrings.config.staging itp

Po tej struktury jest to łatwe do generowania obrazów dla różnych profili. Mamy skrypty wdrażania na każdym komputerze, które odczytują zmienną środowiskową i wdrażają ją odpowiednio. Na przykład skrypt budowy serwera pomostowego kopiuje plik cstrings.config.staging do pliku cstrings.config itp.

+0

Jak uruchomić skrypty wdrażania, aby połączyć bieżący profil z odpowiednim ciągiem połączenia? – abatishchev

+0

@abatishcev: Nasz serwer kompilacji ma cele do testowania, testowania i produkcji. Dokonano czystego kasowania (eksport svn). Skompiluj skrypty "zmień nazwę $ {bin} /cstrings.config. $ {Destination} $ {bin} /cstrings.config", a następnie uruchomimy testy jednostkowe, wdrożenie zip i ftp na maszynę docelową. Każde miejsce docelowe ma pliki konfiguracyjne cstrings, smtp i appsettings w kontroli wersji. np. cstrings.config.staging, smtp.config.staging, appsettings.config.staging. FYI: Możesz zostawić plik cstrings.config na komputerach docelowych jako plik tylko do odczytu, jeśli masz duże poczucie bezpieczeństwa. To nie jest wielka sprawa w naszym środowisku. – Rob

Powiązane problemy