Share via


Zelfstudie: Dynamische configuratie gebruiken in een .NET Framework-app

Gegevens uit App Configuration kunnen worden geladen als App Instellingen in een .NET Framework-app. Zie de quickstart voor meer informatie. De app-Instellingen kan echter alleen worden vernieuwd wanneer de app opnieuw wordt opgestart, zoals is ontworpen door .NET Framework. De .NET-provider van App Configuration is een .NET Standard-bibliotheek. Het biedt ondersteuning voor het dynamisch opslaan en vernieuwen van de configuratie zonder opnieuw opstarten van de app. Deze zelfstudie laat zien hoe u dynamische configuratie-updates kunt implementeren in een .NET Framework-console-app.

In deze zelfstudie leert u het volgende:

  • De .NET Framework-app instellen om de bijbehorende configuratie bij te werken als reactie op wijzigingen in een App Configuration-archief.
  • De meest recente configuratie opnemen in uw toepassing.

Vereisten

Een sleutelwaarde toevoegen

Voeg de volgende sleutelwaarde toe aan het App Configuration-archief en laat label en inhoudstype ongewijzigd met de standaardwaarden. Ga naar Een sleutelwaarde maken voor meer informatie over het toevoegen van sleutelwaarden aan een archief met behulp van Azure Portal of de CLI.

Sleutel Weergegeven als
TestApp:Instellingen:Message Gegevens uit Azure-app-configuratie

Een .NET Framework-console-app maken

  1. Start Visual Studio en selecteer Een nieuw project maken.

  2. Filter in Een nieuw project maken op het consoleprojecttype en selecteer Console-app (.NET Framework) met C# in de lijst met projectsjablonen. Druk op Volgende.

  3. Voer in Uw nieuwe project configureren een projectnaam in. Selecteer onder Framework .NET Framework 4.7.2 of hoger. Druk op Maken.

Gegevens opnieuw laden vanuit app-configuratie

  1. Klik met de rechtermuisknop op het project en selecteer NuGet-pakketten beheren. Zoek en voeg op het tabblad Bladeren de nieuwste versie van het volgende NuGet-pakket toe aan uw project.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Open Program.cs en voeg de volgende naamruimten toe.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Voeg twee variabelen toe om aan de configuratie gerelateerde objecten op te slaan.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Werk de methode Main bij om verbinding te maken met App Configuration met de opgegeven vernieuwingsopties.

    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 de ConfigureRefresh methode wordt een sleutel in uw App Configuration-archief geregistreerd voor wijzigingscontrole. De Register methode heeft een optionele Booleaanse parameter refreshAll die kan worden gebruikt om aan te geven of alle configuratiewaarden moeten worden vernieuwd als de geregistreerde sleutel verandert. In dit voorbeeld wordt alleen de sleutel TestApp:Instellingen:Message vernieuwd. De SetCacheExpiration methode geeft de minimale tijd op die moet verstrijken voordat een nieuwe aanvraag wordt ingediend bij App Configuration om te controleren op eventuele configuratiewijzigingen. In dit voorbeeld overschrijft u de standaardverlooptijd van 30 seconden, waarbij u een tijd van 10 seconden opgeeft voor demonstratiedoeleinden.

  5. Voeg een methode PrintMessage() toe waarmee een vernieuwing van configuratiegegevens vanuit App Configuration wordt geactiveerd.

    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!");
    }
    

    Als u de ConfigureRefresh methode alleen aanroept, wordt de configuratie niet automatisch vernieuwd. U roept de TryRefreshAsync methode aan vanuit de interface IConfigurationRefresher om een vernieuwing te activeren. Dit ontwerp is om aanvragen te voorkomen die naar App Configuration worden verzonden, zelfs wanneer uw toepassing niet actief is. U kunt de TryRefreshAsync aanroep opnemen waar u uw toepassing actief beschouwt. Dit kan bijvoorbeeld zijn wanneer u een binnenkomend bericht, een order of een iteratie van een complexe taak verwerkt. Het kan ook in een timer staan als uw toepassing altijd actief is. In dit voorbeeld belt TryRefreshAsync u wanneer u op Enter drukt. Houd er rekening mee dat, zelfs als de aanroep TryRefreshAsync om welke reden dan ook mislukt, uw toepassing de configuratie in de cache blijft gebruiken. Er wordt nog een poging gedaan wanneer de geconfigureerde verlooptijd van de cache is verstreken en de TryRefreshAsync aanroep opnieuw wordt geactiveerd door uw toepassingsactiviteit. Bellen TryRefreshAsync is een no-op voordat de geconfigureerde cacheverlooptijd is verstreken, dus de invloed op de prestaties is minimaal, zelfs als deze vaak wordt aangeroepen.

De app lokaal bouwen en uitvoeren

  1. Stel een omgevingsvariabele met de naam Verbinding maken ionString in op de alleen-lezen sleutel verbindingsreeks verkregen tijdens het maken van uw App Configuration-archief.

    Als u de Windows-opdrachtprompt gebruikt, moet u de volgende opdracht uitvoeren:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Als u Windows PowerShell gebruikt, voert u de volgende opdracht uit:

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    
  2. Start Visual Studio opnieuw zodat de wijziging kan worden doorgevoerd.

  3. Druk op Ctrl + F5 om de consoletoepassing te bouwen en uit te voeren.

    App launch local

  4. Navigeer in Azure Portal naar Configuration Explorer van uw App Configuration-archief en werk de waarde van de volgende sleutel bij.

    Sleutel Weergegeven als
    TestApp:Instellingen:Message Gegevens uit Azure-app-configuratie - bijgewerkt
  5. Druk, als u weer in de actieve toepassing bent, op Enter om een vernieuwing te activeren en de bijgewerkte waarde af te drukken naar de opdrachtprompt of het PowerShell-venster.

    App refresh local

    Notitie

    Omdat de vervaltijd van de cache is ingesteld op tien seconden met behulp van de methode SetCacheExpiration tijdens het opgeven van de configuratie voor de vernieuwingsbewerking, wordt de waarde voor de configuratie-instelling alleen bijgewerkt als er ten minste tien seconden zijn verstreken sinds de laatste vernieuwing voor die instelling.

Resources opschonen

Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen

In deze zelfstudie hebt u uw .NET Framework-app ingeschakeld om de configuratie-instellingen uit App Configuration dynamisch te vernieuwen. Ga verder met de volgende zelfstudie voor meer informatie over het inschakelen van dynamische configuratie in een ASP.NET Web Application (.NET Framework):

Als u wilt weten hoe u een door Azure beheerde identiteit gebruikt om de toegang tot App Configuration te stroomlijnen, gaat u verder met de volgende zelfstudie: