Mam aplikację, którą właśnie migruję do platformy Azure. Obecnie używam transformacji web.config do zarządzania zmianą bazy danych łączącej środowiska dev/staging/prod. Jak najlepiej zarządzać wieloma ciągami połączeń w usłudze Azure?Sprawdzone metody obsługi ciągów Azure
Odpowiedz
W przypadkach, w których nie ma znaczenia, jeśli deweloper widzi poświadczenia produkcji, można użyć wbudowanych w Visual Studio 10 transformacje config. Jeśli to jest to, czego szukasz, wykonaj następujące kroki:
1.Navigate do folderu Azure projektu w eksploratora plików
2. Zrób kopię ServiceConfiguration.cscfg
3. Zmień nazwę kopii do ServiceConfiguration.Base .cscfg
4. Dla każdej konfiguracji kompilacji (np. Dev, Staging, Production), stwórz ServiceConfiguration. < Nazwa konfiguracji kompilacji >. Plik ccfg. W tych plików, można użyć normalnej config transformation syntax
5. Otwórz plik .ccproj w edytorze tekstowym
6. znaleźć następujące węzła
<ItemGroup>
<ServiceDefinition Include="ServiceDefinition.csdef" />
<ServiceConfiguration Include="ServiceConfiguration.cscfg" />
</ItemGroup>
i zastąpić go z tego (trzeba będzie zmieniać ten blok, aby dopasować configs build):
<ItemGroup>
<ServiceDefinition Include="ServiceDefinition.csdef" />
<ServiceConfiguration Include="ServiceConfiguration.cscfg" />
<None Include="ServiceConfiguration.Base.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
<None Include="ServiceConfiguration.Dev.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
<None Include="ServiceConfiguration.Staging.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
<None Include="ServiceConfiguration.Production.cscfg">
<DependentUpon>ServiceConfiguration.cscfg</DependentUpon>
</None>
</ItemGroup>
7.Add następujące na koniec pliku .ccproj, tuż nad </Project>
:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
<Target Name="BeforeBuild">
<TransformXml Source="ServiceConfiguration.Base.cscfg" Transform="ServiceConfiguration.$(Configuration).cscfg" Destination="ServiceConfiguration.cscfg" />
</Target>
8.Jeśli używasz serwera CI, który nie ma zainstalowanego programu Visual Studio 10, prawdopodobnie będziesz musiał skopiować folder C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web i jego zawartość z maszyny programującej na serwer.
Aktualizacja: W @SolarSteve noted, może trzeba dodać do swojej ServiceConfiguration nazw plików * cscfg... Oto przykład z ServiceConfiguration.Base.cscfg:
<sc:ServiceConfiguration serviceName="MyServiceName" osFamily="1" osVersion="*" xmlns:sc="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<sc:Role name="MyRoleName">
<sc:Instances count="1" />
<sc:ConfigurationSettings>
<sc:Setting name="DataConnectionString" value="xxx" />
</sc:ConfigurationSettings>
</sc:Role>
</sc:ServiceConfiguration>
Osobiście:
- Dropped internetowych Przekształcenia config całkowicie.
- Ustawienie jest pobierane z cscfg.
- Wersja rozwojowa cscfg wskazuje na lokalne środowisko programistyczne (przechowywane w sterowaniu wersją).
- Podczas wdrażania do produkcji dostarczamy bezpieczne dane uwierzytelniające do produkcji SQL Azure i pamięci masowej.
Dla próbki klasy zarządzania ustawienia, które skanuje ustawienia aplikacji i chmura środowisko dla wartości konfiguracyjnych, można sprawdzić open source Lokad.CQRS for Windows Azure projektu (patrz CloudSettingsProvider)
Mamy szereg środowisk (lokalnego dev wewnątrz dev fabric, lokalny dev poza dev fabric, testowanie, release, który ma 2 wersje: release/prod i release/stage oraz 20 projektów, z których niektóre wymagają pewnej zmienności w ustawieniach konfiguracyjnych Rozwiązaliśmy ten problem, tworząc mały projekt "config", zawiera podfoldery pasujące do środowiska. Skopiuj pliki z podfolderu w zależności od tego, którą kompilację robimy w folderze głównym projektu konfiguracyjnego, podczas każdej kompilacji mi.
Wszystkie inne projekty prowadzą do projektu konfiguracji plików .config. Używamy też częściowych plików konfiguracyjnych, aby zachować szaleństwo powtarzania tych samych informacji przez cały czas w różnych środowiskach.
Nadzieja to pomaga
Wreszcie opublikowano blog na ten temat na http://www.paraleap.com/blog/post/Managing-environments-in-a-distributed-Azure-or-other-other-cloud- based-NET-solution.aspx – Igorek
Jeśli wszystkie rozwiązania wykorzystują ponownie ten sam projekt konfiguracyjny, w jaki sposób radzisz sobie z właściwymi właściwościami konfiguracyjnymi? – Jeff
Czy możesz rozwinąć? – Igorek
miałem ten sam wymóg przekształcenia ServiceConfiguration.
poszedłem z odpowiedzią od JMAC, ale miał problemy z przestrzeni nazw w wersji bazowej (dziękuję!):
<ServiceConfiguration serviceName="TestCloud2" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
po nieco bardziej grzebać znaleźć this Andrew Patterson (dziękuję) .
więc moja wynikające przekształcić plik:
<asc:ServiceConfiguration serviceName="TestCloud2" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:asc="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
<asc:Role name="WebRole1">
<asc:Instances count="1" />
<asc:ConfigurationSettings>
<asc:Setting name="LoggingStorage" value="UseDevelopmentStorage=true" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</asc:ConfigurationSettings>
</asc:Role>
Można użyć CloudConfigurationManager w Azure SDK 1.7 http://msdn.microsoft.com/en-us/LIBRARY/microsoft.windowsazure.cloudconfigurationmanager
zaczyna to patrząc w ServiceConfiguration.cscfg przykład ServiceConfiguration.Cloud.cscfg do konfiguracji. Jeśli go tam nie ma, że wraca do web.config i app.config
Na przykład
CloudConfigurationManager.GetSetting("StorageConnectionString")
będzie wyglądać w odpowiednim cscfgfile do ustawiania StorageConnectionString, to będzie szukać web.config, a następnie app.config.
- 1. Sprawdzone metody wdrażania IModelBinder
- 2. Sprawdzone metody - Rejestrowanie zapisanych procedur
- 3. Sprawdzone metody Java dla lokalizacji plików konfiguracyjnych
- 4. Nieprawidłowe i sprawdzone metody SQL Server
- 5. Niestandardowe sprawdzone metody UIView i UIViewController?
- 6. Jakie są sprawdzone metody nazywania modułów Maven?
- 7. Sprawdzone metody odwołań do JavaScriptu IntelliSense
- 8. Sprawdzone metody mapowania jednego obiektu na inny
- 9. Sprawdzone metody Python/Flask dla warstwy usługowej
- 10. Najlepiej sprawdzone metody Entity Framework i WPF
- 11. Jakie są sprawdzone metody zarządzania identyfikatorami zdarzeń?
- 12. Odczytywanie ciągów połączenia z konfiguracji ciągów połączenia internetowego Azure
- 13. Jaki jest właściwy sposób obsługi ciągów char *?
- 14. Dziwne zachowanie metody dopasowania ciągów()
- 15. jquery attr ("sprawdzone", "sprawdzone") działa tylko raz
- 16. Czy istnieją sprawdzone metody testowania bezpieczeństwa w sklepie deweloperskim Agile?
- 17. Jakie są sprawdzone metody wykrywania współczynnika pikseli/gęstości?
- 18. SQL/SSIS DataWareHouse Ładowanie tabeli faktów, sprawdzone metody?
- 19. Sprawdzone metody korzystania z Git z Visual Studio?
- 20. Sprawdzone metody ograniczania liczby połączeń z interfejsem lustrzanym API
- 21. Sprawdzone metody serwera pomostowego aplikacji sieci Web (w ramach budżetu)
- 22. Sprawdzone metody korzystania z Git z Intellij Idea
- 23. Sprawdzone metody: jak najlepiej implementować gwiazdki gwiazdkowe w szablonach Django
- 24. Jakie są sprawdzone metody wdrażania aplikacji Catalyst na serwerze produkcyjnym?
- 25. Jakieś sprawdzone metody postępowania z Java EE i java.endorsed.dirs?
- 26. Sprawdzone metody Haskell QuickCheck (szczególnie podczas testowania klas typów)
- 27. Dodawanie metody rozszerzenia do klasy ciągów - C#
- 28. Przyciski radiowe i .attr ("sprawdzone", "sprawdzone") NIE działają w IE7
- 29. F # sprawdzone Arytmetyka Zakres
- 30. CheckedTextView nie sprawdzone
Otrzymuję komunikat "WAT020: Tylko jedna definicja usługi może być aktywna." błąd podczas budowania przy użyciu powyżej ... jakichkolwiek pomysłów, co zrobiłem źle? –
Zignoruj powyższe Jestem idiotą ... –
Hej jmac, stworzyłem dodatek VS (http://visualstudiogallery.msdn.microsoft.com/69023d00 -a4f9-4a34-a6cd-7e854ba318b5), który używa TransformXml, a grupa ppl prosi o wsparcie projektu Azure.To wygląda na to, że byłby to dobry punkt wyjścia dla mnie.Jeśli zaimplementuję to czy zapewniłeś, że mam rację? mnie przez email: sayedha [at] {MICROSOFTdotCOM}. –