Självstudie: Använda dynamisk konfiguration i en Azure Functions app
Den App Configuration .NET-konfigurationsprovidern stöder cachelagring och uppdatering av konfiguration dynamiskt driven av programaktivitet. Den här självstudien visar hur du kan implementera dynamiska konfigurationsuppdateringar i koden. Den bygger på den Azure Functions som introducerades i snabbstarterna. Innan du fortsätter slutför du Skapa en Azure Functions-app med Azure App Configuration först.
I den här guiden får du lära dig att:
- Konfigurera din Azure Functions att uppdatera konfigurationen som svar på ändringar i ett App Configuration store.
- Mata in den senaste konfigurationen i dina Azure Functions-anrop.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Visual Studio 2019 med arbetsbelastningen Azure Development
- Azure Functions verktyg
- Slutför snabbstarten Skapa en Azure Functions-app med Azure App Configuration
Läsa in data på nytt från App Configuration
Öppna Startup.cs och uppdatera
ConfigureAppConfigurationmetoden .Metoden registrerar en inställning som ska kontrolleras för ändringar när en uppdatering utlöses i programmet, vilket du gör i det senare steget när
ConfigureRefreshdu lägger till_configurationRefresher.TryRefreshAsync(). Parametern instruerar App Configuration providern att läsa in hela konfigurationen på nytt när en ändringrefreshAllidentifieras i den registrerade inställningen.Alla inställningar som registrerats för uppdatering har en standardförfallotid på 30 sekunder. Den kan uppdateras genom att anropa
AzureAppConfigurationRefreshOptions.SetCacheExpirationmetoden .public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:` .Select("TestApp:*") // Configure to reload configuration if the registered sentinel key is modified .ConfigureRefresh(refreshOptions => refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true)); }); }Tips
När du uppdaterar flera nyckelvärden i App Configuration vill du normalt inte att programmet ska läsa in konfigurationen på nytt innan alla ändringar görs. Du kan registrera en sentinel-nyckel och bara uppdatera den när alla andra konfigurationsändringar har slutförts. Detta hjälper till att säkerställa konsekvensen för konfigurationen i ditt program.
Uppdatera metoden
Configureför att göra Azure App Configuration tjänster tillgängliga via beroendeinjektion.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); }Öppna Function1.cs och lägg till följande namnområden.
using System.Linq; using Microsoft.Extensions.Configuration.AzureAppConfiguration;Uppdatera konstruktorn för att hämta instansen
IConfigurationRefresherProviderav via beroendeinjektion, från vilken du kan hämta instansen avIConfigurationRefresher.private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }Uppdatera metoden
Runoch signalen för att uppdatera konfigurationen med hjälp av metoden i början avTryRefreshAsyncFunctions-anropet. Det blir en no-op om förfallotiden för cachen inte har nåtts. Ta bortawaitoperatorn om du föredrar att konfigurationen uppdateras utan att blockera det aktuella Functions-anropet. I så fall får senare Functions-anrop det uppdaterade värdet.public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); await _configurationRefresher.TryRefreshAsync(); string keyName = "TestApp:Settings:Message"; string message = _configuration[keyName]; return message != null ? (ActionResult)new OkObjectResult(message) : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration."); }
Testa funktionen lokalt
Ange en miljövariabel med namnet ConnectionString och ställ in den på åtkomstnyckeln till ditt appkonfigurationsarkiv. 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'Tryck på F5 för att testa funktionen. Om du uppmanas till det godkänner du begäran Visual Studio att ladda ned och installera Azure Functions Core-verktyg (CLI). Du kan också behöva aktivera ett brandväggsfel så att verktygen kan hantera HTTP-begäranden.
Kopiera URL:en för funktionen från dina Azure Functions-utdata.

Klistra in webbadressen för HTTP-begäran i webbläsarens adressfält. Följande bild visar svaret på den lokala GET-begäran som returnerades av funktionen i webbläsaren.

Logga in på Azure-portalen. Välj Alla resurser och välj App Configuration som du skapade i snabbstarten.
Välj Configuration Explorer och uppdatera värdet för följande nyckel:
Tangent Värde TestApp:Settings:Message Data från Azure App Configuration – uppdaterad Skapa sedan sentinel-nyckeln eller ändra dess värde om den redan finns, till exempel
Tangent Värde TestApp:Inställningar:Sentinel v1 Uppdatera webbläsaren några gånger. När den cachelagrade inställningen upphör att gälla efter 30 sekunder visar sidan svaret från Functions-anropet med det uppdaterade värdet.

Anteckning
Exempelkoden som används i den här självstudien kan laddas ned från App Configuration GitHub lagringsplatsen.
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.
- Logga in på Azure Portaloch välj resurs grupper.
- I rutan Filtrera efter namn anger du namnet på din resurs grupp.
- I listan resultat väljer du resurs gruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- 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 Azure Functions 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.