Korzystanie z różnych stron internetowych.konfiguracja w środowisku deweloperskim i produkcyjnym

Muszę użyć innego łańcucha połączenia z bazą danych i adresu serwera SMTP w moim ASP.NET aplikacja w zależności od tego jest uruchamiana w środowisku deweloperskim lub produkcyjnym.

Aplikacja odczytuje ustawienia z sieci.plik konfiguracyjny za pomocą WebConfigurationManager.AppSettings property.

Używam polecenia Build/Publish, aby wdrożyć aplikację na serwerze produkcyjnym przez FTP, a następnie ręcznie zastąpić zdalną sieć.config z poprawnym.

Czy można jakoś uprościć proces wdrożenia? Dzięki!

Author: Alexander Prokofyev, 2008-11-20

9 answers

W Visual Studio 2010 i nowszych możesz teraz zastosować transformację w swojej sieci.config w zależności od konfiguracji build.

Podczas tworzenia stron www.config, możesz rozwinąć plik w Eksploratorze rozwiązań, a zobaczysz dwa pliki:

  • www.Debugowanie.Config
  • www.Uwolnij.Config

Zawierają kod transformacji, który można wykorzystać do

  • Zmień łańcuch połączeń
  • Usuń ślad debugowania i Ustawienia
  • Register error pages

Zobacz Www.składnia transformacji config dla wdrożenia projektu aplikacji webowej na MSDN aby uzyskać więcej informacji.

Możliwe jest również, choć oficjalnie nieobsługiwane, zastosowanie tego samego rodzaju transformacji do pliku app.config spoza aplikacji webowej. Zobacz Phil Bolduc blog jak zmodyfikować plik projektu, aby dodać nowe zadanie do msbuild.

To jest długo wytrzymała Prośba o Visual Studio Uservoice .

Rozszerzenie dla Visual Studio 2010 i wyżej, "SlowCheetah ," jest dostępne, aby zająć się tworzeniem transformacji dla dowolnego pliku konfiguracyjnego. Od Visual Studio 2017.3, SlowCheetah został zintegrowany z IDE , A baza kodu jest zarządzana przez Microsoft. Ta nowa wersja obsługuje również transformację JSON.

 136
Author: Pierre-Alain Vigeant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 14:25:00

Znacznik <appSettings> w sieci.config obsługuje atrybut pliku, który ładuje zewnętrzny config z własnym zestawem kluczy / wartości. Spowoduje to zastąpienie wszystkich ustawień, które masz w sieci.config lub Dodaj do nich.

Wykorzystujemy to, modyfikując naszą sieć.konfiguracja w czasie instalacji z atrybutem pliku, który pasuje do środowiska, w którym witryna jest instalowana. Robimy to za pomocą przełącznika w naszym instalatorze.

Eg;

<appSettings file=".\EnvironmentSpecificConfigurations\dev.config">

<appSettings file=".\EnvironmentSpecificConfigurations\qa.config">

<appSettings file=".\EnvironmentSpecificConfigurations\production.config">

Uwaga:

  • zmiany w .config określony przez atrybut nie spowoduje restartu asp.net proces roboczy
 72
Author: Jason Slocomb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 15:55:36

Zajrzałeś do projektów wdrożeń internetowych?

Http://www.microsoft.com/downloads/details.aspx?FamilyId=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&displaylang=en

Istnieje również wersja dla VS2005, jeśli nie jesteś na 2008.

 24
Author: wulimaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 14:36:50

Ja też chciałbym wiedzieć. To pomaga wyodrębnić problem dla mnie

<connectionStrings configSource="connectionStrings.config"/>

Następnie zachowuję connectionStrings.config oraz " {host} connectionStrings.config". Nadal jest to problem, ale jeśli zrobisz to dla sekcji, które różnią się w dwóch środowiskach, możesz wdrożyć i wersję tej samej sieci web.config.

(A ja nie używam VS, btw.)

 12
Author: harpo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 14:38:53

Używam skryptu nant Build do wdrażania w różnych środowiskach. Mam go zmodyfikować moje pliki konfiguracyjne przez XPath w zależności od tego, gdzie są one wdrażane, a następnie automatycznie umieszcza je w tym środowisku za pomocą Beyond Compare .

Konfiguracja zajmuje minutę lub dwie, ale wystarczy to zrobić tylko raz. Potem przejmuję pliki wsadowe, a ja idę po kolejną kawę. :)

Oto artykuł, który na nim znalazłem.

 6
Author: Jeff Sheldon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 14:54:44

W ramach jednego projektu, w którym mieliśmy 4 środowiska (development, test, staging i production), opracowaliśmy system, w którym aplikacja wybrała odpowiednią konfigurację na podstawie nazwy Maszyny, do której została wdrożona.

To działało dla nas, ponieważ:

  • administratorzy mogli wdrażać aplikacje bez angażowania programistów (wymóg) i bez konieczności majstrowania z plikami konfiguracyjnymi (których nienawidzili);
  • nazwy maszyn zgodne z konwencją. Dopasowaliśmy nazwiska użycie wyrażenia regularnego i wdrożone na wielu maszynach w środowisku; oraz
  • zastosowaliśmy zintegrowane zabezpieczenia dla ciągów połączeń. Oznacza to, że możemy przechowywać nazwy kont w naszych plikach konfiguracyjnych w czasie projektowania bez ujawniania żadnych haseł.

To działało dobrze dla nas w tym przypadku, ale prawdopodobnie nie będzie działać wszędzie.

 4
Author: dariom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 15:24:55

Edytor konfiguracji biblioteki korporacyjnej może Ci w tym pomóc. Pozwala na utworzenie podstawowego pliku konfiguracyjnego, a następnie deltas dla każdego środowiska. Następnie można scalić podstawową konfigurację i deltę, aby utworzyć sieć specyficzną dla środowiska.config. Spójrz na informacje tutaj {[2] } które przeprowadzą cię przez to lepiej niż ja.

 3
Author: PhilPursglove,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 14:45:14

Możesz również zrobić z tego krok po budowie. Skonfiguruj nową konfigurację, która jest "wdrażaj"oprócz debugowania i Wydania, a następnie skopiuj krok po kompilacji przez właściwą sieć.config.

Używamy zautomatyzowanych kompilacji dla wszystkich naszych projektów, a wraz z nimi skrypt build aktualizuje sieć.plik konfiguracyjny wskazujący poprawną lokalizację. Ale to Ci nie pomoże, jeśli robisz wszystko z VS.

 3
Author: Cory Foy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 14:52:53

Jest to jedna z ogromnych zalet korzystania z maszyny.config. W mojej ostatniej pracy mieliśmy Środowiska programistyczne, testowe i produkcyjne. Możemy użyć maszyny.config dla takich rzeczy jak łańcuchy połączeń (do odpowiedniego, dev/test/prod SQL machine).

Może to nie być rozwiązanie dla Ciebie, jeśli nie masz dostępu do rzeczywistej maszyny produkcyjnej (np. jeśli korzystałeś z firmy hostingowej na współdzielonym hoście).

 3
Author: Timothy Khouri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 15:13:03