Snabbstart: Lägga till funktionsflaggor i en Azure Functions-app
I den här snabbstarten skapar du ett Azure Functions C#-kodprojekt och använder funktionsflaggor i det. Du använder funktionshanteringen från Azure App Configuration för att centralt lagra alla dina funktionsflaggor och kontrollera deras tillstånd.
.NET-funktionshanteringsbiblioteken utökar ramverket med stöd för funktionsflagga. De här biblioteken bygger på .NET-konfigurationssystemet. De integreras med App Configuration via dess .NET-konfigurationsprovider.
Kommentar
Den här artikeln stöder för närvarande endast C#-funktionsappar som körs på .NET 6.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa en kostnadsfritt.
- Ett appkonfigurationsarkiv. Skapa en butik.
- Visual Studio 2019 med Azure-utvecklingsarbetsbelastningen.
Lägga till en funktionsflagga
Lägg till en funktionsflagga med namnet Beta i App Configuration Store och lämna Etikett och Beskrivning med sina standardvärden. Mer information om hur du lägger till funktionsflaggor i en butik med hjälp av Azure-portalen eller CLI finns i Skapa en funktionsflagga.
Skapa ett Functions-projekt
Azure Functions-projektmallen i Visual Studio skapar ett C#-klassbiblioteksprojekt som du kan publicera till en funktionsapp i Azure. Du kan använda en funktionsapp för att gruppera funktioner som en logisk enhet för enklare hantering, distribution, skalning och delning av resurser.
På Visual Studio-menyn väljer du Arkiv>Nytt>projekt.
I Skapa ett nytt projekt anger du funktioner i sökrutan, väljer Azure Functions-mallen och väljer sedan Nästa.
I Konfigurera det nya projektet anger du ett projektnamn för projektet och väljer sedan Skapa. Funktionsappens namn måste vara ett giltigt C#-namnområde. Du kan inte använda understreck, bindestreck eller andra icke-alfanumeriska tecken.
Använd värdena i följande tabell för inställningarna för att skapa ett nytt Azure Functions-program:
Inställning Värde beskrivning .NET-version .NET 6 Det här värdet skapar ett funktionsprojekt som körs i processen med version 4.x av Azure Functions-körningen. Mer information finns i Översikt över Azure Functions-körningsversioner. Funktionsmall HTTP-utlösare Det här värdet skapar en funktion som utlöses av en HTTP-begäran. Lagringskonto (AzureWebJobsStorage) Lagringsemulator Eftersom en funktionsapp i Azure kräver ett lagringskonto tilldelas eller skapas en när du publicerar projektet till Azure. En HTTP-utlösare använder inte ett Azure Storage-konto niska veze. Alla andra utlösartyper kräver ett giltigt Azure Storage-konto niska veze. Auktoriseringsnivå Anonym Funktionen som skapats kan utlösas av alla klienter utan att en nyckel anges. Den här auktoriseringsinställningen gör det enkelt att testa den nya funktionen. Mer information om nycklar och auktorisering finns i Auktoriseringsnycklar och HTTP- och webhookbindningar.
Se till att du anger auktoriseringsnivån till Anonym. Om du väljer standardnivån funktion måste du presentera funktionsnyckeln i begäranden för att få åtkomst till funktionsslutpunkten.
Välj Skapa för att skapa funktionsprojektet och funktionen HTTP-utlösare.
Ansluta till ett appkonfigurationsarkiv
Det här projektet använder beroendeinmatning i .NET Azure Functions. Den lägger till Azure App Configuration som en extra konfigurationskälla där dina funktionsflaggor lagras.
Högerklicka på projektet och välj Hantera NuGet-paket. På fliken Bläddra söker du efter och lägger till följande NuGet-paket i projektet.
- Microsoft.Extensions.Configuration.AzureAppConfiguration version 4.1.0 eller senare
- Microsoft.FeatureManagement version 2.2.0 eller senare
- Microsoft.Azure.Functions.Extensions version 1.1.0 eller senare
Lägg till en ny fil, Startup.cs, med följande kod. Den definierar en klass med namnet
Startup
som implementerar denFunctionsStartup
abstrakta klassen. Ett sammansättningsattribut används för att ange det typnamn som användes vid start av Azure Functions.using System; using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.FeatureManagement; [assembly: FunctionsStartup(typeof(FunctionApp.Startup))] namespace FunctionApp { class Startup : FunctionsStartup { public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { } public override void Configure(IFunctionsHostBuilder builder) { } } }
ConfigureAppConfiguration
Uppdatera metoden och lägg till Azure App Configuration-providern som en extra konfigurationskälla genom att anropaAddAzureAppConfiguration()
.Metoden
UseFeatureFlags()
instruerar providern att läsa in funktionsflaggor. Alla funktionsflaggor har en standardtid på 30 sekunder innan ändringar kontrolleras igen. Förfallointervallet kan uppdateras genom att ange denFeatureFlagsOptions.CacheExpirationInterval
egenskap som skickasUseFeatureFlags
till metoden.public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) .Select("_") .UseFeatureFlags(); }); }
Dricks
Om du inte vill att någon annan konfiguration än funktionsflaggor ska läsas in i ditt program kan du anropa
Select("_")
för att bara läsa in en icke-existerande dummynyckel"_"
. Som standard läses alla konfigurationsnyckelvärden i appkonfigurationsarkivet in om ingenSelect
metod anropas.Configure
Uppdatera metoden för att göra Azure App Configuration Services och funktionshanteraren tillgängliga via beroendeinmatning.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); builder.Services.AddFeatureManagement(); }
Öppna Function1.cs och lägg till följande namnområden.
using System.Linq; using Microsoft.FeatureManagement; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Lägg till en konstruktor som används för att hämta instanser av
_featureManagerSnapshot
ochIConfigurationRefresherProvider
via beroendeinmatning.IConfigurationRefresherProvider
Från kan du hämta instansen avIConfigurationRefresher
.private readonly IFeatureManagerSnapshot _featureManagerSnapshot; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider) { _featureManagerSnapshot = featureManagerSnapshot; _configurationRefresher = refresherProvider.Refreshers.First(); }
Run
Uppdatera metoden för att ändra värdet för det visade meddelandet beroende på funktionsflaggans tillstånd.Metoden
TryRefreshAsync
anropas i början av Functions-anropet för att uppdatera funktionsflaggor. Det blir en no-op om cachens förfallotidsfönster inte nås. Ta bort operatornawait
om du föredrar att funktionsflaggor uppdateras utan att blockera det aktuella Functions-anropet. I så fall får senare Functions-anrop ett uppdaterat värde.[FunctionName("Function1")] 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 message = await _featureManagerSnapshot.IsEnabledAsync("Beta") ? "The Feature Flag 'Beta' is turned ON" : "The Feature Flag 'Beta' is turned OFF"; return (ActionResult)new OkObjectResult(message); }
Testa funktionen lokalt
Ange en miljövariabel med namnet ConnectionString, där värdet är den niska veze du hämtade tidigare i appkonfigurationsarkivet under Åtkomstnycklar. Om du använder Windows-kommandotolken 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 får en uppmaning accepterar du begäran från Visual Studio för att ladda ned och installera Azure Functions Core (CLI)-verktyg. 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 som anger att funktionsflaggan Beta är inaktiverad.
Logga in på Azure-portalen. Välj Alla resurser och välj appkonfigurationsarkivet som du skapade.
Välj Funktionshanterare och ändra tillståndet för betanyckeln till På.
Uppdatera webbläsaren några gånger. När tidsperioden för uppdateringsintervallet passerar ändras sidan för att ange att funktionsflaggan Beta är aktiverad, som visas i bilden nedan.
Kommentar
Exempelkoden som används i den här självstudien kan laddas ned från GitHub-lagringsplatsen för Azure App Configuration.
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-portalen 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 snabbstarten skapade du en funktionsflagga och använde den med en Azure Functions.
Om du vill aktivera funktioner för funktionshantering för andra typer av appar fortsätter du till följande självstudier.
Om du vill veta mer om hur du hanterar funktionsflaggor i Azure App Configuration fortsätter du till följande självstudie.
Fortsätt till följande dokument för den fullständiga funktionskörningen i .NET-funktionshanteringsbiblioteket.