Dela via


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

Den här självstudien visar hur du kan aktivera dynamiska konfigurationsuppdateringar i en ASP.NET Core-app. Den bygger på den webbapp som introducerades i snabbstarterna. Appen använder appkonfigurationsproviderbiblioteket för sin inbyggda konfigurationscachelagring och uppdateringsfunktioner. Innan du fortsätter, slutför först att skapa en ASP.NET Core-app med App Configuration.

I den här handledningen lär du dig hur man:

  • Konfigurera din app för att uppdatera dess inställningar som svar på ändringar i en lagringsplats för appkonfigurationer.
  • Mata in den senaste konfigurationen i din app.

Förutsättningar

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

Läsa in data på nytt från App Configuration

  1. Öppna Program.cs och uppdatera metoden AddAzureAppConfiguration som du lade till under snabbstarten. Du kan ansluta till App Configuration med antingen Microsoft Entra-ID (rekommenderas) eller en anslutningssträng. Följande kodfragment visar hur du använder Microsoft Entra-ID.

    Du använder DefaultAzureCredential för att autentisera till App-konfigurationslagret. När du slutförde snabbstarten som listas i förutsättningarna hade du redan tilldelat dina autentiseringsuppgifter rollen AppKonfigurationsdataläsare.

    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(new Uri(endpoint), new DefaultAzureCredential())
               // Load all keys that start with `TestApp:` and have no label.
               .Select("TestApp:*", LabelFilter.Null)
               // Reload configuration if any selected key-values have changed.
               .ConfigureRefresh(refreshOptions =>
                   refreshOptions.RegisterAll());
    });
    

    Metoden Select används för att läsa in alla nyckelvärden vars nyckelnamn börjar med TestApp: och som inte har någon etikett. Du kan anropa Select metoden mer än en gång för att läsa in konfigurationer med olika prefix eller etiketter. Om du delar ett App Configuration Store med flera appar hjälper den här metoden till att läsa in konfiguration som endast är relevant för din aktuella app i stället för att läsa in allt från din butik.

    ConfigureRefresh I metoden anropar RegisterAll du metoden för att instruera appkonfigurationsprovidern att läsa in hela konfigurationen igen när den identifierar en ändring i något av de valda nyckelvärdena (de som börjar med TestApp: och som inte har någon etikett). Mer information om hur du övervakar konfigurationsändringar finns i Metodtips för konfigurationsuppdatering.

    Tips

    Du kan lägga till ett anrop till refreshOptions.SetRefreshInterval metoden för att ange den minsta tiden mellan konfigurationsuppdateringarna. I det här exemplet använder du standardvärdet 30 sekunder. Justera till ett högre värde om du behöver minska antalet begäranden som görs till appkonfigurationsarkivet.

  2. Lägg till Mellanprogram för Azure App Configuration i tjänstsamlingen för din app.

    Uppdatera Program.cs med följande kod.

    // Existing code in Program.cs
    // ... ...
    
    builder.Services.AddRazorPages();
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    // Bind configuration "TestApp:Settings" section to the Settings object
    builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings"));
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    
  3. Anropa UseAzureAppConfiguration metoden. Det gör att din app kan använda appkonfigurationens mellanprogram för att uppdatera konfigurationen automatiskt.

    Uppdatera Program.cs med följande kod.

    // Existing code in Program.cs
    // ... ...
    
    var app = builder.Build();
    
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
    
    // Use Azure App Configuration middleware for dynamic configuration refresh.
    app.UseAzureAppConfiguration();
    
    // The rest of existing code in program.cs
    // ... ...
    

Du har konfigurerat appen så att den använder alternativmönstret i ASP.NET Core under snabbstarten. När den underliggande konfigurationen av din app uppdateras från App Configuration, uppdateras automatiskt ditt starkt typade Settings-objekt som har erhållits via IOptionsSnapshot<T>. Observera att du inte bör använda IOptions<T> om dynamisk konfigurationsuppdatering önskas, eftersom denna inte läser konfigurationsdata efter att appen har startats.

Uppdatering av begärd konfiguration

Konfigurationsuppdateringen utlöses av inkommande begäranden till webbappen. Ingen uppdatering sker om appen är inaktiv. När din app är aktiv övervakar mellanprogrammet App Configuration alla nycklar som du har registrerat för uppdatering i anropet ConfigureRefresh . Mellanprogrammet utlöses vid varje inkommande begäran till din app. Mellanprogrammet skickar dock bara begäranden om att kontrollera värdet i App Configuration när uppdateringsintervallet som du anger har passerat.

  • Om en begäran till App Configuration för ändringsidentifiering misslyckas fortsätter appen att använda den cachelagrade konfigurationen. Nya försök att söka efter ändringar görs regelbundet medan det finns nya inkommande begäranden till din app.
  • Konfigurationsuppdateringen sker asynkront vid bearbetningen av appens inkommande begäranden. Den blockerar eller saktar inte ned den inkommande begäran som utlöste uppdateringen. Begäran som utlöste uppdateringen kanske inte hämtar de uppdaterade konfigurationsvärdena, men senare begäranden får nya konfigurationsvärden.
  • För att säkerställa att mellanprogrammet utlöses anropar app.UseAzureAppConfiguration() du metoden så tidigt som möjligt i din pipeline för begäran så att ett annat mellanprogram inte hoppar över den i din app.

Skapa och köra appen lokalt

  1. Om du vill skapa appen med hjälp av .NET CLI kör du följande kommando i kommandogränssnittet:

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

        dotnet run
    
  3. Öppna ett webbläsarfönster och gå till den URL som visas i dotnet run utdata.

    Starta snabbstartsappen lokalt

  4. Logga in på Azure-portalen. Välj Alla resurser och välj appkonfigurationsarkivet som du skapade i snabbstarten.

  5. Välj Konfigurationsutforskaren och uppdatera värdena för följande nycklar.

    Nyckel Värde
    TestApp:Inställningar:Bakgrundsfärg grön
    TestApp:Inställningar:Teckensnittsfärg ljusgrå
    TestApp:Inställningar:Meddelande Data från Azure App Configuration – nu med live-uppdateringar!
  6. Uppdatera webbläsaren några gånger. När uppdateringsintervallet förflutit efter 30 sekunder visas sidan med uppdaterat innehåll.

    Starta en uppdaterad snabbstartsapp lokalt

Loggning och övervakning

Loggarna matas ut vid konfigurationsuppdateringen och innehåller detaljerad information om nyckelvärden som hämtats från appkonfigurationsarkivet och konfigurationsändringar som gjorts i ditt program.

  • Ett standardvärde ILoggerFactory läggs till automatiskt när services.AddAzureAppConfiguration() anropas. Appkonfigurationsprovidern använder detta ILoggerFactory för att skapa en instans av ILogger, som matar ut loggarna. ASP.NET Core använder ILogger för loggning som standard, så du behöver inte göra ytterligare kodändringar för att aktivera loggning för appkonfigurationsprovidern.

  • Loggarna matas ut på olika loggnivåer. Standardnivån är Information.

    Loggningsnivå beskrivning
    Felsöka Loggarna innehåller nyckeln och etiketten för nyckelvärden som din applikation övervakar för ändringar från App Configuration-butiken. Informationen innehåller även om nyckelvärdet har ändrats jämfört med vad programmet redan har läst in. Aktivera loggar på den här nivån för att felsöka ditt program om en konfigurationsändring inte skedde som förväntat.
    Information Loggarna innehåller nycklarna för konfigurationsinställningar som uppdateras under en konfigurationsuppdatering. Värden för konfigurationsinställningar utelämnas från loggen för att undvika läckage av känsliga data. Du kan övervaka loggar på den här nivån för att säkerställa att programmet hämtar förväntade konfigurationsändringar.
    Varning Loggarna omfattar fel och undantag som inträffade under konfigurationsuppdateringen. Tillfälliga förekomster kan ignoreras eftersom konfigurationsprovidern fortsätter att använda cachelagrade data och försöker uppdatera konfigurationen nästa gång. Du kan övervaka loggar på den här nivån för repetitiva varningar som kan tyda på potentiella problem. Du roterade till exempel anslutningssträng men glömde att uppdatera programmet.

    Du kan aktivera loggning på Debug loggnivå genom att lägga till följande exempel i appsettings.json filen. Det här exemplet gäller även för alla andra loggnivåer.

    "Logging": {
        "LogLevel": {
            "Microsoft.Extensions.Configuration.AzureAppConfiguration": "Debug"
        }
    }
    
  • Loggningskategorin är Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh, som visas före varje logg. Här är några exempelloggar på varje loggnivå:

    dbug: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0]
        Key-value read from App Configuration. Change:'Modified' Key:'ExampleKey' Label:'ExampleLabel' Endpoint:'https://examplestore.azconfig.io'
    
    info: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0]
        Setting updated. Key:'ExampleKey'
    
    warn: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0]
        A refresh operation failed while resolving a Key Vault reference.
    Key vault error. ErrorCode:'SecretNotFound' Key:'ExampleKey' Label:'ExampleLabel' Etag:'6LaqgBQM9C_Do2XyZa2gAIfj_ArpT52-xWwDSLb2hDo' SecretIdentifier:'https://examplevault.vault.azure.net/secrets/ExampleSecret'
    

Att använda ILogger är den föredragna metoden i ASP.NET program och prioriteras som loggningskälla om en instans av ILoggerFactory finns. Men om ILoggerFactory inte är tillgängligt kan loggarna aktiveras och konfigureras via anvisningarna för .NET Core-appar. För mer information, se loggning i .NET Core och ASP.NET Core.

Anteckning

Loggning är tillgänglig om du använder version 6.0.0 eller senare av något av följande paket.

  • Microsoft.Extensions.Configuration.AzureAppConfiguration
  • Microsoft.Azure.AppConfiguration.AspNetCore
  • Microsoft.Azure.AppConfiguration.Functions.Worker

Rensa resurser

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

Viktigt!

Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.

  1. Logga in på Azure Portal och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens 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å resursgruppen för att bekräfta och välj Ta bort.

Efter en liten stund tas resursgruppen och alla dess resurser bort.

Nästa steg

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