0

Ich habe Probleme beim Abrufen des gewünschten Ergebnisses aus meiner CI/CD-Pipeline beim Bereitstellen einer .NET Core 2.0-Webanwendung für Azure.Bereitstellungsvariablen für Azure .NET Core Web App

Wie es aussieht, funktioniert alles, wenn ich in meiner Testumgebung bereitstellen. Ich habe eine Einstellung hinzugefügt - ConnectionString: Main -, um im Abschnitt AppSettings für die Entwicklungsanwendung im Azure-Portal auf die richtige Datenbank zu verweisen.

Ich möchte jetzt in meiner Produktionsumgebung bereitstellen. Das Problem ist, dass es zwei Produktionsdatenbanken gibt, von denen jeweils nur eine "live" ist. Ich möchte zwei Release-Definitionen erstellen, eine für jede Datenbank, und dann die Möglichkeit haben, beide zu deployen.

Ist es möglich, einfach eine Release-Variable hinzuzufügen, die die lokale Verbindungszeichenfolge in AppSettings.json wie in früheren .Net-Versionen überschreibt, oder ist eine komplexere Lösung erforderlich?

+0

Können Sie zuerst erläutern, warum Sie zwei Live-Produktionsdatenbanken haben? Ist das nicht ein Problem, das mit Bereitstellungsslots gelöst werden kann? –

+0

Es gibt zwei Produktionsdatenbanken, da das System eine tägliche Aktualisierung von einem Altsystem erfordert, was einen mehrstündigen Prozess darstellt und während der Aktualisierung für Benutzer verfügbar sein muss. Nach dem Update sollte die Anwendung auf die zuletzt aktualisierte Datenbank verweisen. Die Daten werden dann langsam bis zum nächsten Update 24 Stunden später veraltet, wenn die Verbindung umgeschaltet wird (nicht ideal, aber notwendig, bis das Altsystem ersetzt wird). Ich denke, dass Sie vielleicht Recht haben, dass Bereitstellungsslots der richtige Weg sind. Ich hatte nicht bemerkt, dass Auto-Swapping ein Feature war. – SBFrancies

Antwort

0

Sie können JSON variable substitution Merkmal Azure App-Dienst bereitstellen Aufgabe, zum Beispiel, ersetzen Sie den Wert des Connectionstring in der Probe unten verwenden, können Sie Release/Umgebungsvariable als Data.DefaultConnection.ConnectionString in Release Definition definieren.

{ 
    "Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True" 
    } 
    } 
} 
+0

Danke, das ist, was ich gesucht habe, obwohl die anderen Antworten mich innehalten ließen, um über meinen Ansatz nachzudenken. – SBFrancies

0

Bei der Verwendung von ASP.NET Core-Anwendungen in Azure empfiehlt sich die Speicherung von Schlüsseln mithilfe von Azure Key Vault. Dadurch wird sichergestellt, dass keine Anmeldeinformationen in der Versionskontrolle oder in VSTS gespeichert werden.

Wenn Sie einen Konfigurationswert während der Bereitstellung wirklich aktualisieren möchten, können Sie Ihre Parameter in Token zerlegen und während der Bereitstellung ersetzen. Sie können dazu this marketplace task verwenden. Managing Config for .NET Core Web App Deployments with Tokenizer and ReplaceTokens Tasks beschreibt, wie Sie diese Aufgaben verwenden.

0

Sie können dies erreichen, indem Sie die Bereitstellung über ARM template erstellen und verschiedene Parameterdateien für jede Umgebung erstellen. Mithilfe der Vorlage können die relevanten App-Einstellungen ersetzt werden, wodurch sie in die Anwendungseinstellungen des Azure-Portals eingefügt werden. Diese Einstellungen überschreiben, was in Ihrer Konfigurationsdatei im Repo eingecheckt ist.

Verwandte Themen