Tutorial: Verwenden der dynamischen Konfiguration in einer ASP.NET-Webanwendung (.NET Framework)
Daten aus App Configuration können als App-Einstellungen in eine .NET Framework-Anwendung geladen werden. Weitere Informationen finden Sie im Schnellstart. Wie im .NET Framework vorgesehen, können die App-Einstellungen jedoch nur beim Neustart der Anwendung aktualisiert werden. Der .NET-Anbieter von App Configuration ist eine .NET Standard-Bibliothek. Sie unterstützt das dynamische Zwischenspeichern und Aktualisieren der Konfiguration ohne Anwendungsneustart. In diesem Tutorial wird veranschaulicht, wie Sie dynamische Konfigurationsaktualisierungen in einer ASP.NET Web Forms-Anwendung implementieren können. Das gleiche Verfahren gilt für .NET Framework MVC-Anwendungen.
In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:
- Einrichten Ihrer ASP.NET-Webanwendung für die Aktualisierung der Konfiguration als Reaktion auf Änderungen in einem App Configuration-Speicher
- Einfügen der aktuellen Konfiguration in Anforderungen an Ihre Anwendung
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto.
- Ein App Configuration-Speicher. Erstellen Sie einen Speicher.
- Visual Studio
- .NET Framework 4.7.2 oder höher
Schlüsselwerte hinzufügen
Fügen Sie dem App Configuration-Speicher die folgenden Schlüsselwerte hinzu, und belassen Sie Bezeichnung und Inhaltstyp bei ihren Standardwerten. Weitere Informationen zum Hinzufügen von Schlüssel-Wert-Paaren zu einem Speicher mithilfe des Azure-Portals oder der CLI finden Sie unter Erstellen eines Schlüssel-Wert-Paars.
Schlüssel | Wert |
---|---|
TestApp:Settings:BackgroundColor | Weiß |
TestApp:Settings:FontColor | Schwarz |
TestApp:Settings:FontSize | 40 |
TestApp:Settings:Message | Daten aus Azure App Configuration |
TestApp:Settings:Sentinel | v1 |
Erstellen einer ASP.NET-Webanwendung
Starten Sie Visual Studio, und wählen Sie Neues Projekt erstellen aus.
Wählen Sie ASP.NET-Webanwendung (.NET Framework) mit C# in der Projektvorlagenliste aus, und klicken Sie auf Weiter.
Geben Sie unter Neues Projekt konfigurieren einen Projektnamen ein. Wählen Sie unter Framework die Option .NET Framework 4.7.2 oder höher aus. Klicken Sie auf Erstellen.
Wählen Sie unter Neue ASP.NET-Webanwendung erstellen die Option Web Forms aus. Klicken Sie auf Erstellen.
Erneutes Laden von Daten aus App Configuration
Klicken Sie mit der rechten Maustaste auf Ihr Projekt, und wählen Sie NuGet-Pakete verwalten aus. Suchen Sie auf der Registerkarte Durchsuchen die nach der aktuellen Version des folgenden NuGet-Pakets, und fügen Sie sie Ihrem Projekt hinzu.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Öffnen Sie die Datei Global.asax.cs, und fügen Sie die folgenden Namespaces hinzu.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Fügen Sie die folgenden zwei statischen Membervariablen zur Klasse
Global
hinzu.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Fügen Sie der Klasse
Global
die MethodeApplication_Start
hinzu. Wenn die Methode bereits vorhanden ist, fügen Sie ihr den folgenden Code hinzu.protected void Application_Start(object sender, EventArgs e) { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:` and have no label. .Select("TestApp:*") // Configure to reload configuration if the registered key 'TestApp:Settings:Sentinel' is modified. .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Sentinel", refreshAll:true) .SetCacheExpiration(new TimeSpan(0, 5, 0)); }); _configurationRefresher = options.GetRefresher(); }); Configuration = builder.Build(); }
Die
Application_Start
-Methode wird bei der ersten Anforderung an Ihre Webanwendung aufgerufen. Sie wird während des Lebenszyklus der Anwendung nur einmal aufgerufen. Daher ist dies ein geeigneter Ort, um IhrIConfiguration
-Objekt zu initialisieren und Daten aus App Configuration zu laden.In der Methode
ConfigureRefresh
wird ein Schlüssel in Ihrem App Configuration-Speicher für die Änderungsüberwachung registriert. Mit dem ParameterrefreshAll
der MethodeRegister
wird angegeben, dass alle Konfigurationswerte aktualisiert werden sollen, wenn sich der registrierte Schlüssel ändert. In diesem Beispiel handelt es sich bei TestApp:Settings:Sentinel um einen Sentinel-Schlüssel, den Sie aktualisieren, nachdem Sie die Änderung aller anderen Schlüssel abgeschlossen haben. Wird eine Änderung erkannt, werden alle Konfigurationswerte von Ihrer Anwendung aktualisiert. Dieser Ansatz trägt dazu bei, die Konsistenz der Konfiguration in Ihrer Anwendung zu gewährleisten, anstatt alle Schlüssel auf Änderungen zu überwachen.Durch die Methode
SetCacheExpiration
wird angegeben, wie viel Zeit mindestens verstreichen muss, bevor eine neue Anforderung an App Configuration gesendet wird, um nach Konfigurationsänderungen zu suchen. In diesem Beispiel setzen Sie die standardmäßige Ablaufzeit von 30 Sekunden außer Kraft und geben stattdessen einen Wert von 5 Minuten an. Dadurch wird die Anzahl potenzieller Anforderungen verringert, die an Ihren App Configuration-Speicher gesendet werden.Fügen Sie der Klasse
Global
die MethodeApplication_BeginRequest
hinzu. Wenn die Methode bereits vorhanden ist, fügen Sie ihr den folgenden Code hinzu.protected void Application_BeginRequest(object sender, EventArgs e) { _ = _configurationRefresher.TryRefreshAsync(); }
Das Aufrufen der Methode
ConfigureRefresh
allein führt nicht dazu, dass die Konfiguration automatisch aktualisiert wird. Sie rufen die MethodeTryRefreshAsync
am Anfang jeder Anforderung auf, um eine Aktualisierung zu signalisieren. Durch diesen Entwurf wird sichergestellt, dass Ihre Anwendung nur Anforderungen an App Configuration sendet, wenn sie aktiv Anforderungen empfängt.Ein Aufruf von
TryRefreshAsync
vor Verstreichen der konfigurierten Cacheablaufzeit ist keine Option, sodass die Auswirkungen auf die Leistung minimal sind. Beim Senden einer Anforderung an App Configuration wird die Konfiguration asynchron aktualisiert, ohne die Ausführung der aktuellen Anforderung zu blockieren, da Sie nicht auf die Aufgabe warten. Die aktuelle Anforderung erhält möglicherweise nicht die aktualisierten Konfigurationswerte, nachfolgende Anforderungen dagegen schon.Wenn der Aufruf
TryRefreshAsync
aus einem beliebigen Grund fehlschlägt, verwendet Ihre Anwendung weiterhin die zwischengespeicherte Konfiguration. Ein weiterer Versuch wird unternommen, wenn die konfigurierte Cacheablaufzeit erneut verstrichen ist und derTryRefreshAsync
-Aufruf durch eine neue Anforderung an Ihre Anwendung ausgelöst wird.
Verwenden der aktuellsten Konfigurationsdaten
Öffnen Sie Default.aspx, und ersetzen Sie ihren Inhalt durch folgenden Markup. Stellen Sie sicher, dass das Attribut Inherits mit dem Namespace und dem Klassennamen Ihrer Anwendung übereinstimmt.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebFormApp.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Azure App Configuration Web Forms Demo</title> </head> <body id="body" runat="server"> <form id="form1" runat="server"> <div style="text-align: center"> <asp:Label ID="message" runat="server" /> </div> </form> </body> </html>
Öffnen Sie Default.aspx.cs, und aktualisieren Sie ihren Inhalt mit dem folgenden Code.
using System; using System.Web.UI.WebControls; namespace WebFormApp { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Read configuration from the IConfiguration object loaded from Azure App Configuration string messageText = Global.Configuration["TestApp:Settings:Message"] ?? "Please add the key \"TestApp:Settings:Message\" in your Azure App Configuration store."; string messageFontSize = Global.Configuration["TestApp:Settings:FontSize"] ?? "20"; string messageFontColor = Global.Configuration["TestApp:Settings:FontColor"] ?? "Black"; string backgroundColor = Global.Configuration["TestApp:Settings:BackgroundColor"] ?? "White"; message.Text = messageText; message.Font.Size = FontUnit.Point(int.Parse(messageFontSize)); message.ForeColor = System.Drawing.Color.FromName(messageFontColor); body.Attributes["bgcolor"] = backgroundColor; } } }
Erstellen und Ausführen der Anwendung
Legen Sie eine Umgebungsvariable namens ConnectionString auf die Verbindungszeichenfolge mit schreibgeschütztem Schlüssel fest, die Sie bei der Erstellung Ihres App Configuration-Speichers erhalten haben.
Führen Sie bei Verwendung der Windows-Eingabeaufforderung den folgenden Befehl aus:
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Führen Sie bei Verwendung von Windows PowerShell den folgenden Befehl aus:
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
Starten Sie Visual Studio, damit die Änderung wirksam wird.
Drücken Sie STRG+F5, um die Anwendung zu kompilieren und auszuführen.
Navigieren Sie im Azure-Portal zum Konfigurations-Explorer Ihres App Configuration-Speichers, und aktualisieren Sie den Wert der folgenden Schlüssel. Denken Sie daran, den Sentinel-Schlüssel TestApp:Settings:Sentinel zuletzt zu aktualisieren.
Key Wert TestApp:Settings:BackgroundColor Grün TestApp:Settings:FontColor LightGray TestApp:Settings:Message Daten aus Azure App Configuration – jetzt mit Liveupdates! TestApp:Settings:Sentinel v2 Aktualisieren Sie die Browserseite, um die neuen Konfigurationseinstellungen anzuzeigen. Möglicherweise müssen Sie mehrere Aktualisierungen durchführen, damit die Änderungen widergespiegelt werden. Alternativ können Sie die Cacheablaufzeit auf weniger als 5 Minuten festlegen.
Hinweis
Sie können den in diesem Tutorial verwendeten Beispielcode aus dem GitHub-Repository für Azure App Configuration herunterladen.
Bereinigen von Ressourcen
Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.
Wichtig
Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.
- Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
- Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
- Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
- Wählen Sie die Option Ressourcengruppe löschen.
- Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.
Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.
Nächste Schritte
In diesem Tutorial haben Sie Ihre ASP.NET Web Forms-Anwendung für eine dynamische Aktualisierung der Konfigurationseinstellungen aus App Configuration eingerichtet. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie die dynamische Konfiguration in einer .NET Framework-App aktivieren:
Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie mithilfe einer von Azure verwaltete Identität den Zugriff auf App Configuration optimieren: