Wie würde ich für zwei Umgebungen, lokal und Cloud, benutzerdefinierte Einstellungen oder Parameter für Ressourcen wie SQL-Datenbanken, Speicherkonten usw. einrichten? Idealerweise wäre es ein Parametername, der im Code aufgerufen wird, um beispielsweise einen DbContext auf einen bestimmten zu verweisen Datenbank, die in Konfigurationen für eine lokale oder Cloud-Umgebung unterschiedlich sein kann. Danke dir.
azure
azure-sql-database
azure-service-fabric
StampyTurtle
quelle
quelle
Antworten:
Um Umgebungsvariablen für die lokale und in der Cloud ausgeführte Ausführung von Service Fabric zu haben, müssen Sie Folgendes tun:
<ServiceManifestImport>
Elemente für jedes Ihrer enthaltenen Projekte. Darunter befindet sich ein<ConfigOverrides>
Element, in dem angegeben wird, welche Werte für unsere Konfigurationen durch Werte ersetzt werden, die pro Umgebung in den lokalen und Cloud-XML-Dateien unter ApplicationParameters in unserem Service Fabric-Projekt festgelegt wurden. In derselben ApplicationManifest.xml-Datei müssen Sie den Parameter hinzufügen, der in den lokalen und Cloud-XML-Dateien vorhanden ist. Andernfalls werden sie beim Erstellen überschrieben.Wenn Sie mit dem obigen Beispiel fortfahren, wird dies so eingestellt.
quelle
ServiceManifestImport
(Kind vonApplicationManifest
), aber dieConfigOverrides
müssen darin gehen (Kind vonServiceManifestImport
).Sie können wie jede andere Anwendung auch Umgebungsvariablen verwenden. Dies funktioniert auch mit ausführbaren Gastdateien innerhalb der Service Fabric, im Gegensatz dazu,
settings.xml
da dies die integrierte Laufzeit der Service Fabric erfordert.Innerhalb Ihrer Anwendung können Sie wie bei jeder anderen .net-Anwendung über die folgende
GetEnvironmentVariable
Methode auf Umgebungsvariablen zugreifenEnvironment
:Dann müssen wir einige Standardwerte für Umgebungsvariablen einrichten. Dies erfolgt in der
ServiceManifest.xml
Manifestdatei des Dienstes.Diese Umgebungsvariablen können dann in der
ApplicationManifest.xml
Datei mithilfe des folgenden Codes überschrieben werden:Dies kann dann wie jede andere Anwendungsmanifesteinstellung mit
local.xml
und parametriert werdencloud.xml
.Dann müssen wir das aktualisieren
ApplicationManifest.xml
, um diese Parameter zu unterstützen.quelle
Die obigen Antworten erklären gut, wie es gemacht wird. Ich mag einen sidemark hinzufügen möchte , warum es , dass ‚ gefaltet ‘:
Dies muss so sein, da die Dienste in sich geschlossen sein sollen. Sie sollten standardmäßig in jeder Anwendung ausgeführt werden, mit der sie verknüpft sind. Unabhängig vom Manifest der Anwendung. Der Dienst kann sich also nur auf Parameter verlassen, die zumindest in seiner eigenen Konfiguration vordefiniert sind.
Diese Voreinstellungen können dann von der Anwendung überschrieben werden. Dies ist der einzige universelle Ansatz.
quelle