Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Öppna Program.cs och uppdatera metoden
AddAzureAppConfigurationsom 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
DefaultAzureCredentialfö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
Selectanvä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 anropaSelectmetoden 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.ConfigureRefreshI metoden anroparRegisterAlldu 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.SetRefreshIntervalmetoden 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.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 // ... ...Anropa
UseAzureAppConfigurationmetoden. 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
Om du vill skapa appen med hjälp av .NET CLI kör du följande kommando i kommandogränssnittet:
dotnet buildNär bygget har slutförts kör du följande kommando för att köra webbappen lokalt:
dotnet runÖppna ett webbläsarfönster och gå till den URL som visas i
dotnet runutdata.
Logga in på Azure-portalen. Välj Alla resurser och välj appkonfigurationsarkivet som du skapade i snabbstarten.
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! Uppdatera webbläsaren några gånger. När uppdateringsintervallet förflutit efter 30 sekunder visas sidan med uppdaterat innehåll.
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
ILoggerFactoryläggs till automatiskt närservices.AddAzureAppConfiguration()anropas. Appkonfigurationsprovidern använder dettaILoggerFactoryför att skapa en instans avILogger, som matar ut loggarna. ASP.NET Core använderILoggerfö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å
Debugloggnivå genom att lägga till följande exempel iappsettings.jsonfilen. 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.AzureAppConfigurationMicrosoft.Azure.AppConfiguration.AspNetCoreMicrosoft.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.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- 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.