Freigeben über


Tutorial: Verwenden der dynamischen Konfiguration in einer .NET Framework-App

Daten aus App Configuration können als App-Einstellungen in eine .NET Framework-App geladen werden. Weitere Informationen finden Sie im Schnellstart. Wie im .NET Framework vorgesehen, können die App-Einstellungen jedoch nur beim Neustart der App aktualisiert werden. Der .NET-Anbieter von App Configuration ist eine .NET Standard-Bibliothek. Sie unterstützt das dynamische Zwischenspeichern und Aktualisieren der Konfiguration ohne App-Neustart. In diesem Tutorial wird veranschaulicht, wie Sie dynamische Konfigurationsupdates in einer .NET Framework-Konsolen-App implementieren können.

In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:

  • Richten Sie Ihre .NET Framework-App für die Aktualisierung der Konfiguration als Reaktion auf Änderungen in einem App Configuration-Speicher ein.
  • Einfügen der aktuellen Konfiguration in Ihre Anwendung

Voraussetzungen

Einen Schlüsselwert hinzufügen

Fügen Sie dem App Configuration-Speicher den folgenden Schlüsselwert hinzu, und übernehmen Sie für Bezeichnung und Inhaltstyp die Standardwerte. Weitere Informationen zum Hinzufügen von Schlüssel-Werten zu einem Speicher mithilfe des Azure-Portals oder der CLI finden Sie unter Erstellen eines Schlüssel-Werts.

Schlüssel Wert
TestApp:Settings:Message Daten aus Azure App Configuration

Erstellen einer .NET Framework-Konsolen-App

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

  2. Filtern Sie unter Neues Projekt erstellen nach dem Projekttyp Konsole, und klicken Sie in der Projektvorlagenliste auf Konsolen-App (.NET Framework) mit C#. Klicken Sie auf 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.

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 des folgenden NuGet-Pakets, und fügen Sie sie Ihrem Projekt hinzu.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Öffnen Sie Program.cs, und fügen Sie die folgenden Namespaces hinzu.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    using Azure.Identity;
    
  3. Fügen Sie zwei Variablen zum Speichern konfigurationsbezogener Objekte hinzu.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Aktualisieren Sie mit den angegebenen Aktualisierungsoptionen die Methode Main, um eine Verbindung mit App Configuration herzustellen. Stellen Sie eine Verbindung mit App Configuration mithilfe von Microsoft Entra ID (empfohlen) oder einer Verbindungszeichenfolge her.

    Sie verwenden die DefaultAzureCredential für die Authentifizierung beim App Configuration-Speicher. Folgen Sie den Anweisungen , um Ihre Anmeldeinformationen der Rolle "App-Konfigurationsdatenleser" zuzuweisen. Achten Sie darauf, ausreichend Zeit für die Verteilung der Berechtigung einzuplanen, bevor Sie Ihre Anwendung ausführen.

    // Existing code in Program.cs
    // ... ...
    
    static void Main(string[] args)
    {
        var 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(TimeSpan.FromSeconds(10));
                   });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    
    // The rest of existing code in Program.cs
    // ... ...
    

    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 wird die Standardablaufzeit von 30 Sekunden außer Kraft gesetzt, indem stattdessen zu Demonstrationszwecken eine Zeit von 10 Sekunden festgelegt wird.

  5. Fügen Sie eine Methode namens PrintMessage() hinzu, die eine Aktualisierung der Konfigurationsdaten aus App Configuration auslöst.

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    
        // Wait for the user to press Enter
        Console.ReadLine();
    
        await _refresher.TryRefreshAsync();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
    

    Das Aufrufen der Methode ConfigureRefresh allein führt nicht dazu, dass die Konfiguration automatisch aktualisiert wird. Sie rufen die Methode TryRefreshAsync über die Schnittstelle IConfigurationRefresher auf, um eine Aktualisierung auszulösen. Dieses Design soll verhindern, dass Anfragen an die App Configuration gesendet werden, selbst wenn Ihre Anwendung im Leerlauf ist. Sie können den Aufruf TryRefreshAsync dort verwenden, wo Sie Ihre Anwendung als aktiv betrachten. Dies kann beispielsweise der Fall sein, wenn Sie eine eingehende Nachricht, eine Bestellung oder eine Iteration einer komplexen Aufgabe verarbeiten. Er kann auch Teil eines Timers sein, wenn Ihre Anwendung ständig aktiv ist. In diesem Beispiel rufen Sie TryRefreshAsync auf, wenn Sie die EINGABETASTE drücken. Beachten Sie, dass Ihre Anwendung auch dann weiterhin die zwischengespeicherte Konfiguration verwendet, wenn beim Aufruf TryRefreshAsync aus irgendeinem Grund ein Fehler auftritt. Ein weiterer Versuch wird unternommen, wenn das konfigurierte Aktualisierungsintervall verstrichen ist und der TryRefreshAsync Aufruf erneut von Ihrer Anwendungsaktivität ausgelöst wird. Das Aufrufen von TryRefreshAsync ist vor Verstreichen des konfigurierten Aktualisierungsintervalls keine Option. Daher sind die Auswirkungen auf die Leistung minimal, auch wenn der Aufruf häufig erfolgt.

Lokales Erstellen und Ausführen der App

  1. Legen Sie eine Umgebungsvariable fest.

    Setzen Sie eine Umgebungsvariable Endpoint auf den Endpunkt Ihres App-Konfigurationsspeichers, den Sie unter der Übersicht Ihres Stores 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 Konsolen-App zu erstellen und auszuführen.

    Lokaler App-Start

  4. Navigieren Sie im Azure-Portal zum Konfigurations-Explorer Ihres App Configuration-Speichers, und aktualisieren Sie den Wert des folgenden Schlüssels.

    Schlüssel Wert
    TestApp:Settings:Message Daten aus Azure App Configuration: Aktualisiert
  5. Zurück in der laufenden Anwendung drücken Sie die EINGABETASTE, um eine Aktualisierung auszulösen und den aktualisierten Wert in der Eingabeaufforderung oder im PowerShell-Fenster anzuzeigen.

    Lokale App-Aktualisierung

    Hinweis

    Da das Aktualisierungsintervall mithilfe der SetRefreshInterval Methode auf 10 Sekunden festgelegt wurde, während die Konfiguration für den Aktualisierungsvorgang angegeben wurde, wird der Wert für die Konfigurationseinstellung nur aktualisiert, wenn mindestens 10 Sekunden seit der letzten Aktualisierung für diese Einstellung verstrichen sind.

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.

  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 Tutorial haben Sie Ihre .NET Framework-App aktiviert, um Konfigurationseinstellungen dynamisch aus App Configuration zu aktualisieren. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie die dynamische Konfiguration in einer ASP.NET-Webanwendung (.NET Framework) aktivieren:

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