Delen via


Quickstart: Functievlagmen toevoegen aan een Azure Functions-app

In deze quickstart maakt u een C#-codeproject voor Azure Functions en gebruikt u daarin functievlagmen. U gebruikt functiebeheer van Azure App Configuration om al uw functievlaggen centraal op te slaan en hun status te bepalen.

De .NET Feature Management-bibliotheken breiden het framework uit met ondersteuning voor functiemarkeringen. Deze bibliotheken worden boven op het .NET-configuratiesysteem gebouwd. Ze integreren met App Configuration via diens configuratieprovider voor .NET.

Notitie

Dit artikel ondersteunt momenteel alleen C#-in-process functie-apps die worden uitgevoerd op .NET 6.

Vereisten

Een functievlag toevoegen

Voeg een functievlag met de naam Beta toe aan het App Configuration-archief en laat label en beschrijving ongewijzigd met de standaardwaarden. Ga naar Een functievlag maken voor meer informatie over het toevoegen van functievlagmen aan een winkel met behulp van Azure Portal of de CLI.

Functievlag met de naam Beta inschakelen

Een Functions-project maken

Met de Azure Functions-projectsjabloon in Visual Studio maakt u een C#-klassebibliotheekproject dat u kunt publiceren naar een functie-app in Azure. U kunt een functie-app gebruiken om functies te groeperen in een logische eenheid, zodat u resources eenvoudiger kunt beheren, implementeren, schalen en delen.

  1. Selecteer in Visual Studio-menu Bestand>Nieuw>Project.

  2. Voer in Een nieuw project makenfuncties in het zoekvenster in, kies de sjabloon Azure Functions en selecteer vervolgens Volgende.

  3. Voer in Uw nieuwe project configureren een projectnaam in voor uw project en selecteer vervolgens Maken. De functie-appnaam moet geldig zijn als een C#-naamruimte. Gebruik dus geen onderstrepingstekens, afbreekstreepjes of andere niet-alfanumerieke tekens.

  4. Gebruik de waarden in de volgende tabel voor de instellingen van Een nieuw Azure Functions-toepassing:

    Instelling Weergegeven als Beschrijving
    .NET-versie .NET 6 Met deze waarde maakt u een functieproject dat in verwerking wordt uitgevoerd met versie 4.x van de Azure Functions-runtime. Raadpleeg Overzicht van Azure Functions-runtime voor meer informatie.
    Functiesjabloon HTTP-trigger Met deze waarde wordt er een functie gemaakt die wordt geactiveerd door een HTTP-aanvraag.
    Opslagaccount (AzureWebJobsStorage) Opslagemulator Omdat een functie-app in Azure een opslagaccount vereist, wordt er een toegewezen of gemaakt wanneer u uw project publiceert naar Azure. Een HTTP-trigger gebruikt geen Azure Storage-accountverbindingsreeks. Alle andere triggers vereisen een geldige Azure Storage-accountverbindingsreeks.
    Verificatieniveau Anonieme De gemaakte functie kan door iedere client worden geactiveerd zonder een sleutel op te geven. Met deze autorisatie-instelling kunt u eenvoudig uw nieuwe functie testen. Raadpleeg Autorisatiesleutels in de HTTP- en webhookbindingen voor meer informatie over sleutels en autorisatie.

    Schermopname van Azure Functions-projectinstellingen


    Zorg ervoor dat u het Autorisatieniveau instelt op Anoniem. Wanneer u het standaardniveau van Functie kiest, moet u de functiesleutel opnemen in aanvragen om toegang te krijgen tot het eindpunt van de functie.

  5. Selecteer OK om het functieproject en de door HTTP geactiveerde functie te maken.

Verbinding maken met een App Configuration-archief

In dit project wordt gebruikgemaakt van afhankelijkheidsinjectie in .NET Azure Functions. Hierbij wordt Azure App Configuration wordt toegevoegd als een extra configuratiebron waar uw functievlaggen worden opgeslagen.

  1. Klik met de rechtermuisknop op het project en selecteer NuGet-pakketten beheren. Zoek op het tabblad Bladeren de volgende NuGet-pakketten en voeg deze toe aan uw project.

  2. Voeg het nieuwe bestand Startup.cs toe met de volgende code. Hiermee wordt een klasse gedefinieerd met de naam Startup, waarmee de abstracte klasse FunctionsStartup wordt geïmplementeerd. Er wordt een assembly-kenmerk gebruikt om de typenaam op te geven die wordt gebruikt tijdens het opstarten van 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. Werk de ConfigureAppConfiguration-methode bij en voeg de Azure App Configuration-provider toe als een extra configuratiebron door AddAzureAppConfiguration() aan te roepen.

    De UseFeatureFlags()-methode geeft de provider opdracht de functievlaggen te laden. Alle functievlaggen hebben een standaardvervalperiode voor de cache van dertig seconden voordat opnieuw op wijzigingen wordt gecontroleerd. De verlooptijd kan worden bijgewerkt door de eigenschap FeatureFlagsOptions.CacheExpirationInterval in te stellen die wordt doorgegeven aan de methode UseFeatureFlags.

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                   .Select("_")
                   .UseFeatureFlags();
        });
    }
    

    Tip

    Als u niet wilt dat andere configuraties dan functievlagmen in uw toepassing worden geladen, kunt u alleen aanroepen Select("_") om alleen een niet-bestaande dummysleutel "_"te laden. Standaard worden alle configuratiesleutelwaarden in uw App Configuration-archief geladen indien geen methode Select wordt aangeroepen.

  4. Werk de methode Configure bij om Azure App Configuration-services en functiebeheer beschikbaar te maken via afhankelijkheidsinjectie.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
        builder.Services.AddFeatureManagement();
    }
    
  5. Open Function1.cs en voeg de volgende naamruimten toe.

    using System.Linq;
    using Microsoft.FeatureManagement;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    

    Voeg een constructor toe om een exemplaar van _featureManagerSnapshot en IConfigurationRefresherProvider te verkrijgen via afhankelijkheidsinjectie. Vanuit de IConfigurationRefresherProvider kunt u het exemplaar van IConfigurationRefresher verkrijgen.

    private readonly IFeatureManagerSnapshot _featureManagerSnapshot;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider)
    {
        _featureManagerSnapshot = featureManagerSnapshot;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  6. Werk de methode Run bij om de waarde van het weergegeven bericht te wijzigen, afhankelijk van de status van de functievlag.

    De methode TryRefreshAsync wordt aangeroepen aan het begin van de functieaanroep om functievlaggen te vernieuwen. Er gebeurt niets (no-op) als de vervaltijd van de cache niet wordt bereikt. Verwijder de operator await als u de functievlaggen liever wilt vernieuwen zonder dat de huidige aanroep van Functions wordt geblokkeerd. In dat geval krijgen latere aanroepen van Functions een bijgewerkte waarde.

    [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);
    }
    

De functie lokaal testen

  1. Stel een omgevingsvariabele in met de naam ConnectionString, waarbij de waarde de verbindingsreeks is die u eerder in uw App Configuration-archief hebt opgehaald onder Toegangssleutels. Als u de Windows-opdrachtprompt gebruikt, voert u de volgende opdracht uit en start u de opdrachtprompt opnieuw om de wijziging door te voeren:

        setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Als u Windows PowerShell gebruikt, voert u de volgende opdracht uit:

        $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

    Als u macOS of Linux gebruikt, voert u de volgende opdracht uit:

        export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. Druk op F5 om de functie testen. Accepteer desgevraagd de aanvraag van Visual Studio om Azure Functions Core-hulpprogramma's (CLI) te downloaden en installeren. Mogelijk moet u ook een firewall-uitzondering inschakelen, zodat de hulpprogramma's HTTP-aanvragen kunnen afhandelen.

  3. Kopieer de URL van uw functie vanuit de uitvoer van de Azure Functions-runtime.

    Quickstart over foutopsporing in functies in Visual Studio

  4. Plak de URL van de HTTP-aanvraag in de adresbalk van uw browser. In de volgende afbeelding ziet u het antwoord dat aangeeft dat bètaversie van de functievlag is uitgeschakeld.

    De functiemarkering Snelstartfunctie is uitgeschakeld

  5. Meld u aan bij het Azure-portaal. Selecteer Alle resources en selecteer het App Configuration-archief dat u hebt gemaakt.

  6. Selecteer Functiebeheer en wijzig de status van de sleutel Beta in Aan:

  7. Vernieuw de browser een paar keer. Wanneer het tijdvenster voor het vernieuwingsinterval is verstreken, wordt de pagina gewijzigd om aan te geven dat bètaversie van de functievlag is ingeschakeld, zoals wordt weergegeven in de onderstaande afbeelding.

    De functiemarkering Snelstartfunctie is ingeschakeld

Notitie

De voorbeeldcode in deze zelfstudie kan worden gedownload van de Azure App Configuration GitHub repo (GitHub-opslagplaats in Azure App Configuration).

Resources opschonen

Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen

In deze quickstart hebt u een nieuwe functievlag gemaakt en gebruikt met een Azure Functions-app via de bibliotheek Microsoft.FeatureManagement.