Freigeben über


Lernprogramm: Verwenden der dynamischen Konfiguration in einer ASP.NET Webanwendung (.NET Framework)

Daten aus der App-Konfiguration können als App-Einstellungen in einer .NET Framework-Anwendung geladen werden. Weitere Informationen finden Sie im Schnellstart. Wie von .NET Framework entworfen, 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 Lernprogramm wird gezeigt, wie Sie dynamische Konfigurationsupdates in einer ASP.NET Web Forms-Anwendung implementieren können. Die gleiche Technik gilt für .NET Framework-MVC-Anwendungen.

In diesem Tutorial lernen Sie Folgendes:

  • Richten Sie Ihre ASP.NET Webanwendung ein, um die Konfiguration als Reaktion auf Änderungen in einem App-Konfigurationsspeicher zu aktualisieren.
  • Einfügen der neuesten Konfiguration in Anforderungen an Ihre Anwendung.

Voraussetzungen

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:Einstellungen:Hintergrundfarbe weiß
TestApp:Einstellungen:FontColor Schwarze
TestApp:Einstellungen:FontSize 40
TestApp:Settings:Message Daten aus Azure App Configuration

Erstellen einer ASP.NET Webanwendung

  1. Starten Sie Visual Studio, und wählen Sie Neues Projekt erstellen aus.

  2. Wählen Sie ASP.NET Webanwendung (.NET Framework) mit C# aus der Projektvorlagenliste aus, und drücken Sie "Weiter".

  3. 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.

  4. Wählen Sie in "Neue ASP.NET Webanwendung erstellen" "Webformulare" aus. Klicken Sie auf Erstellen.

Erneutes Laden von Daten aus App Configuration

  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt, und wählen Sie NuGet-Pakete verwalten aus. Suchen Sie auf der Registerkarte " Durchsuchen " die neueste Version der folgenden NuGet-Pakete zu Ihrem Projekt, und fügen Sie sie hinzu.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Öffnen Sie Global.asax.cs Datei, und fügen Sie folgende Namespaces hinzu.

    using Azure.Identity;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Fügen Sie der Global Klasse die folgenden statischen Membervariablen hinzu.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Fügen Sie der Application_Start Klasse eine Global Methode hinzu. Wenn die Methode bereits vorhanden ist, fügen Sie den folgenden Code hinzu.

    protected void Application_Start(object sender, EventArgs e)
    {
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh => 
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(new TimeSpan(0, 5, 0));
                   });
            _configurationRefresher = options.GetRefresher();
        });
    
        Configuration = builder.Build();
    }
    

    Die Application_Start Methode wird für die erste Anforderung an Ihre Webanwendung aufgerufen. Sie wird nur einmal während des Lebenszyklus der Anwendung aufgerufen. Daher ist es ein guter Ort, um Ihr IConfiguration Objekt zu initialisieren und Daten aus der App-Konfiguration zu laden.

    Innerhalb der ConfigureRefresh Methode rufen Sie die RegisterAll Methode auf, den App-Konfigurationsanbieter anzuweisen, die gesamte Konfiguration neu zu laden, wenn eine Änderung in einem der ausgewählten Schlüsselwerte erkannt wird (die mit TestApp beginnen und keine Bezeichnung haben). Weitere Informationen zum Überwachen von Konfigurationsänderungen finden Sie unter Bewährte Methoden für die Aktualisierung der Konfiguration.

    Durch die Methode SetRefreshInterval 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 überschreiben Sie stattdessen die Standardablaufzeit von 30 Sekunden und geben stattdessen eine Zeit von 5 Minuten an. Dadurch wird die potenzielle Anzahl von Anfragen an Ihren App-Konfigurationsspeicher reduziert.

  5. Fügen Sie der Application_BeginRequest Klasse eine Global Methode hinzu. Wenn die Methode bereits vorhanden ist, fügen Sie 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 TryRefreshAsync Methode am Anfang jeder Anforderung auf, um eine Aktualisierung zu signalisieren. Mit diesem Design wird sichergestellt, dass Ihre Anwendung nur Anforderungen an die App-Konfiguration sendet, wenn sie aktiv Anforderungen empfängt.

    Das Aufrufen von TryRefreshAsync ist vor Verstreichen des konfigurierten Aktualisierungsintervalls keine Option. Daher sind die Auswirkungen auf die Leistung minimal. Wenn eine Anforderung an die App-Konfiguration gestellt wird, während Sie nicht auf die Aufgabe warten, wird die Konfiguration asynchron aktualisiert, ohne die Ausführung der aktuellen Anforderung zu blockieren. Die aktuelle Anforderung erhält möglicherweise nicht die aktualisierten Konfigurationswerte, nachfolgende Anforderungen dagegen schon.

    Wenn der Aufruf TryRefreshAsync aus irgendeinem Grund fehlschlägt, verwendet Ihre Anwendung weiterhin die zwischengespeicherte Konfiguration. Ein weiterer Versuch wird unternommen, wenn das konfigurierte Aktualisierungsintervall erneut abgelaufen ist und der TryRefreshAsync-Aufruf durch eine neue Anfrage an Ihre Anwendung ausgelöst wird.

Verwenden der neuesten Konfigurationsdaten

  1. Öffnen Sie Default.aspx , und ersetzen Sie den Inhalt durch das folgende Markup. Stellen Sie sicher, dass das Inherits-Attribut dem Namespace und dem Klassennamen Ihrer Anwendung entspricht.

    <%@ 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>
    
  2. Öffnen Sie Default.aspx.cs , und aktualisieren Sie sie 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

  1. Legen Sie eine Umgebungsvariable fest.

    Legen Sie eine Umgebungsvariable Endpoint auf den Endpunkt Ihres App Configuration-Speichers fest, den Sie in der Übersicht Ihres Speichers im Azure-Portal finden.

    Führen Sie bei Verwendung einer Windows-Eingabeaufforderung den folgenden Befehl aus, und starten Sie die Eingabeaufforderung neu, damit die Änderung wirksam wird:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Wenn Sie PowerShell verwenden, führen Sie den folgenden Befehl aus:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Führen Sie bei Verwendung von macOS oder Linux den folgenden Befehl aus:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Starten Sie Visual Studio, damit die Änderung wirksam wird.

  3. Drücken Sie STRG+F5, um die Webanwendung zu erstellen und auszuführen.

    App-Start lokal

  4. Navigieren Sie im Azure-Portal zum Konfigurations-Explorer Ihres App-Konfigurationsspeichers , und aktualisieren Sie den Wert der folgenden Schlüssel.

    Schlüssel Wert
    TestApp:Einstellungen:Hintergrundfarbe Grün
    TestApp:Einstellungen:FontColor HellGrau
    TestApp:Settings:Message Daten aus der Azure App-Konfiguration – jetzt mit Liveupdates!
  5. Aktualisieren Sie die Browserseite, um die neuen Konfigurationseinstellungen anzuzeigen. Möglicherweise müssen Sie mehr als einmal aktualisieren, damit die Änderungen wiedergegeben werden, oder Ihr Aktualisierungsintervall auf weniger als 5 Minuten ändern.

    Lokale App-Aktualisierung

Hinweis

Sie können den in diesem Lernprogramm verwendeten Beispielcode aus dem GitHub-Repository der Azure-App-Konfiguration 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.

Von Bedeutung

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.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
  2. Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
  3. Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  5. 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 Lernprogramm haben Sie Ihre ASP.NET Web Forms-Anwendung aktiviert, um Konfigurationseinstellungen dynamisch aus der App-Konfiguration zu aktualisieren. Weitere Informationen zum Aktivieren der dynamischen Konfiguration in einer .NET Framework-App finden Sie im nächsten Lernprogramm:

Im nächsten Tutorial erfahren Sie, wie Sie eine von Azure verwaltete Identität hinzufügen, um den Zugriff auf App Configuration zu optimieren: