2016-01-26 17 views

Odpowiedz

11

Aplikacja Service Fabric składa się z pakietu kodu, pakietu konfiguracyjnego i danych (https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-application-model/).

Możesz użyć pakietu konfiguracyjnego do przechowywania i pobierania dowolnych par klucz-wartość, których potrzebujesz, np. ciąg połączenia. Aby uzyskać więcej informacji, zapoznaj się z artykułem https://azure.microsoft.com/en-us/documentation/articles/service-fabric-manage-multiple-environment-app-configuration/.

+2

Dzięki za link, zapisałem wartość w pliku Settings.xml. ale jak odzyskać tę wartość w kodzie w czasie wykonywania? Nie znalazłem żadnego przykładu na ten temat. –

+0

Ach, dobry punkt! Musisz użyć CodePackageActivationConext. Spójrz na tę odpowiedź SO http://stackoverflow.com/questions/33928204/where-do-you-set-and-access-run-time-configuration-parameters-per-environment-fo – charisk

+0

Działa jak urok. Ale jeszcze jedno pytanie. Ponieważ usługa ServiceInitializationParameters jest dostępna tylko w ramach aktora/usługi, w jaki sposób mogę uzyskać do niej dostęp w innych klasach? Nie mogę utworzyć zmiennej statycznej w Actor/Service, ponieważ jest to obiekt niestatyczny. i jeśli utworzę normalną właściwość, wtedy muszę utworzyć instancję klasy Aktor/Usługa w innych klasach, kiedy potrzebuję tej wartości. –

1

Można dodać wiele plików ApplicationParameters. Po prostu skopiuj i wklej to samo z Cloud.Xml i używaj do wielu konfiguracji środowiska.

kroki, aby dokonać niezbędnych zmian

  1. Wartości podane w settings.xml muszą być zastępowane w ApplicationManifest.xml gdy importuje ServiceManifest.xml .Below jest kod wspierając nadrzędne zmiany dodać je w pliku ApplicationManifest.xml.

    a) Dodaje się pierwszą wartość domyślna parametru

    <Parameters> 
        <Parameter Name="StatelessService1_InstanceCount" DefaultValue="-1" /> 
        <!-- Default Value is set to Point to Dev Database --> 
        <Parameter Name="DatabaseString"DefaultValue="Server=someserver.database.windows.net\;Database=DbDev;user id=[userid];password=[Password];Trusted_Connection=false;" /> 
        </Parameters> 
    

    b) następnie zastąpić go w ServiceManifestImport

    <ServiceManifestImport> 
          <ServiceManifestRef ServiceManifestName="StatelessServicePkg" 
            ServiceManifestVersion="1.0.0" />   
         <ConfigOverrides> 
          <ConfigOverride Name="Config"> 
           <Settings> 
            <Section Name="DatabaseConnections"> 
              <Parameter Name="DbString" Value="[DatabaseString]" /> 
            </Section> 
           </Settings> 
         </ConfigOverride> 
        </ConfigOverrides> 
        </ServiceManifestImport> 
    
  2. Powyższe zmiany kod zastąpić następujące kod settings.xml

    <Section Name="DatabaseConnections"> 
        <Parameter Name="DbString" Value="Server=someserver.database.windows.net\;Database=DbDev;user id=[userid];password=[Password];Trusted_Connection=false;" /> 
    </Section> 
    
  3. Łącznie, gdy aplikacja zostanie wdrożona yed wartości w ApplicationParameter DevParam.xml lub QaParam.xml lub ProdParam.xml przekroczą wszystkie wartości ustawień.

    <Parameters> 
        <Parameter Name="StatelessService1_InstanceCount" Value="-1" /> 
          <Parameter Name="DatabaseString" Value="Server=someserverqa.database.windows.net\;Database=DbQA;user id=[userid];password=[Password];Trusted_Connection=false;" /> 
    </Parameters> 
    
Powiązane problemy