Självstudie: Använda dynamisk konfiguration i en .NET Core-app

Den App Configuration .NET-providerbiblioteket stöder uppdatering av konfigurationen på begäran utan att ett program startas om. Den här självstudien visar hur du kan implementera dynamiska konfigurationsuppdateringar i koden. Den bygger på appen som introducerades i snabbstarten. Du bör slutföra Skapa en .NET Core-app med App Configuration innan du fortsätter.

Du kan använda valfri kodredigerare för att göra stegen i den här självstudien. Visual Studio Code är ett utmärkt alternativ som är tillgängligt på Windows, macOS och Linux.

I den här guiden får du lära dig att:

  • Konfigurera .NET Core-appen så att den uppdaterar sin konfiguration som svar på ändringar i ett App Configuration store.
  • Använd den senaste konfigurationen i ditt program.

Förutsättningar

Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.

Slutför snabbstarten Skapa en .NET Core-app med App Configuration.

Aktivitetsdriven konfigurationsuppdatering

Öppna Program.cs och uppdatera koden enligt följande.

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
using System;
using System.Threading.Tasks;

namespace TestConsole
{
    class Program
    {
        private static IConfiguration _configuration = null;
        private static IConfigurationRefresher _refresher = null;

        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder();
            builder.AddAzureAppConfiguration(options =>
            {
                options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                        .ConfigureRefresh(refresh =>
                        {
                            refresh.Register("TestApp:Settings:Message")
                                   .SetCacheExpiration(TimeSpan.FromSeconds(10));
                        });

                _refresher = options.GetRefresher();
            });

            _configuration = builder.Build();
            PrintMessage().Wait();
        }

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

I metoden ConfigureRefresh registreras en nyckel i ditt App Configuration för ändringsövervakning. Metoden har en valfri boolesk parameter som kan användas för att ange om alla konfigurationsvärden Register ska uppdateras om den registrerade nyckeln refreshAll ändras. I det här exemplet uppdateras bara nyckeln TestApp:Inställningar:Message. Metoden anger den minsta tid som måste gå innan en ny begäran görs för SetCacheExpiration att App Configuration för att söka efter konfigurationsändringar. I det här exemplet åsidosätter du standardförfallotiden på 30 sekunder och anger i stället en tid på 10 sekunder i demonstrationssyfte.

Om du ConfigureRefresh enbart anropar metoden uppdateras inte konfigurationen automatiskt. Du anropar TryRefreshAsync metoden från gränssnittet för att utlösa en IConfigurationRefresher uppdatering. Den här designen är för att undvika förfrågningar som skickas till App Configuration även när programmet är inaktivt. Du bör inkludera TryRefreshAsync anropet där du anser att programmet är aktivt. Det kan till exempel vara när du bearbetar ett inkommande meddelande, en order eller en iteration av en komplex uppgift. Det kan också vara i en timer om programmet är aktivt hela tiden. I det här exemplet anropar du TryRefreshAsync varje gång du trycker på Retur. Observera att även om anropet TryRefreshAsync misslyckas av någon anledning fortsätter programmet att använda den cachelagrade konfigurationen. Ett nytt försök görs när den konfigurerade cachens förfallotid har passerat och TryRefreshAsync anropet utlöses av din programaktivitet igen. Anrop är en no-op innan den konfigurerade förfallotiden för cachen förflutit, så dess prestandapåverkan är TryRefreshAsync minimal, även om den anropas ofta.

Skapa och köra appen lokalt

  1. Ange en miljövariabel med namnet ConnectionString och ställ in den på åtkomstnyckeln till App Configuration store. Om du använder Windows kör du följande kommando och startar om kommandotolken så att ändringen börjar gälla:

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

    Om du använder Windows PowerShell kör du följande kommando:

     $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

    Om du använder macOS eller Linux kör du följande kommando:

     export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. Kör följande kommando för att skapa konsolappen:

     dotnet build
    
  3. När bygget har slutförts kör du följande kommando för att köra appen lokalt:

     dotnet run
    

    Snabbstart av lokal app

  4. Logga in på Azure-portalen. Välj Alla resurser och välj den App Configuration Store-instans som du skapade i snabbstarten.

  5. Välj Configuration Explorer och uppdatera värdena för följande nycklar:

    Tangent Värde
    TestApp:Settings:Message Data från Azure App Configuration – uppdaterad
  6. Tryck på Retur för att utlösa en uppdatering och skriv ut det uppdaterade värdet i kommandotolken eller PowerShell-fönstret.

    Snabbstart med uppdatering av lokal app

    Anteckning

    Eftersom förfallotiden för cacheminnet var inställd på 10 sekunder med hjälp av metoden när du anger konfigurationen för uppdateringsåtgärden, uppdateras värdet för konfigurationsinställningen endast om minst 10 sekunder har förflutit sedan den senaste uppdateringen för den SetCacheExpiration inställningen.

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapats i den här artikeln tar du bort resurs gruppen som du skapade här för att undvika avgifter.

Viktigt

Att ta bort en resursgrupp kan inte ångras. Resurs gruppen och alla resurser i den tas bort permanent. Var noga så att du inte tar bort fel resursgrupp eller resurser av misstag. Om du har skapat resurserna för den här artikeln i en resurs grupp som innehåller andra resurser som du vill behålla, tar du bort varje resurs separat från dess respektive fönster i stället för att ta bort resurs gruppen.

  1. Logga in på Azure Portaloch välj resurs grupper.
  2. I rutan Filtrera efter namn anger du namnet på din resurs grupp.
  3. I listan resultat väljer du resurs gruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resurs gruppen som ska bekräftas och välj ta bort.

Efter en liten stund tas resurs gruppen och alla dess resurser bort.

Nästa steg

I den här självstudien har du aktiverat .NET Core-appen för att dynamiskt uppdatera konfigurationsinställningarna från App Configuration. Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten App Configuration kan du fortsätta till nästa självstudie.