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:

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

Voraussetzungen

Hinzufügen eines Schlüssel-Wert-Paars

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-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: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

  2. Öffnen Sie Program.cs, und fügen Sie die folgenden Namespaces hinzu.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  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.

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:`.
                    .Select("TestApp:*")
                    // Configure to reload the key 'TestApp:Settings:Message' if it is modified.
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    In der Methode ConfigureRefresh wird ein Schlüssel in Ihrem App Configuration-Speicher für die Änderungsüberwachung registriert. Die Methode Register enthält den optionalen booleschen Parameter refreshAll, mit dem angegeben werden kann, ob alle Konfigurationswerte bei einer Änderung des registrierten Schlüssels aktualisiert werden sollen. In diesem Beispiel wird nur der Schlüssel TestApp:Settings:Message aktualisiert. 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 wird die Standardablaufzeit von 30 Sekunden zu Demonstrationszwecken in 10 Sekunden geändert.

  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 App Configuration gesendet werden, selbst wenn sich Ihre Anwendung im Leerlauf befindet. 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 die konfigurierte Cacheablaufzeit verstrichen ist und der Aufruf TryRefreshAsync von Ihrer Anwendungsaktivität erneut ausgelöst wird. Das Aufrufen von TryRefreshAsync ist vor Verstreichen der konfigurierten Cacheablaufzeit 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 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"
    
  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.

    App launch local

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

    Key Wert
    TestApp:Settings:Message Daten aus Azure App Configuration: Aktualisiert
  5. Drücken Sie in der ausgeführten Anwendung die EINGABETASTE, um eine Aktualisierung auszulösen, und geben Sie den aktualisierten Wert in der Eingabeaufforderung oder im PowerShell-Fenster aus.

    App refresh local

    Hinweis

    Da die Cacheablaufzeit beim Angeben der Konfiguration für den Aktualisierungsvorgang mit der SetCacheExpiration-Methode auf zehn Sekunden festgelegt wurde, wird der Wert für die Konfigurationseinstellung erst aktualisiert, wenn seit der letzten Aktualisierung für diese Einstellung mindestens zehn Sekunden 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: