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

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.

Aktivera funktionsflagga med namnet Beta

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.

  1. På Visual Studio-menyn väljer du Arkiv>Nytt>projekt.

  2. I Skapa ett nytt projekt anger du funktioner i sökrutan, väljer Azure Functions-mallen och väljer sedan Nästa.

  3. 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.

  4. 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.

    Skärmbild av Azure Functions-projektinställningar


    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.

  5. 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.

  1. 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.

  2. Lägg till en ny fil, Startup.cs, med följande kod. Den definierar en klass med namnet Startup som implementerar den FunctionsStartup 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)
            {
            }
        }
    }
    
  3. ConfigureAppConfiguration Uppdatera metoden och lägg till Azure App Configuration-providern som en extra konfigurationskälla genom att anropa AddAzureAppConfiguration().

    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 den FeatureFlagsOptions.CacheExpirationInterval egenskap som skickas UseFeatureFlags 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 ingen Select metod anropas.

  4. 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();
    }
    
  5. Ö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 och IConfigurationRefresherProvider via beroendeinmatning. IConfigurationRefresherProviderFrån kan du hämta instansen av IConfigurationRefresher.

    private readonly IFeatureManagerSnapshot _featureManagerSnapshot;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider)
    {
        _featureManagerSnapshot = featureManagerSnapshot;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  6. 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 operatorn await 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

  1. 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'
    
  2. 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.

  3. Kopiera URL:en för funktionen från dina Azure Functions-utdata.

    Snabbstart för funktionsfelsökning i VS

  4. 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.

    Snabbstart Funktionsflagga inaktiverad

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

  6. Välj Funktionshanterare och ändra tillståndet för betanyckeln till .

  7. 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.

    Snabbstart Funktionsflagga aktiverad

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.

  1. Logga in på Azure-portalen 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 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.