Delen via


Voorwaardelijke functies met een aangepast filter inschakelen in een ASP.NET Core-toepassing

Functievlagmen kunnen functiefilters gebruiken om functies voorwaardelijk in te schakelen. Zie Voorwaardelijke functies inschakelen met functiefilters voor meer informatie over functiefilters.

Deze handleiding laat zien hoe u een aangepast functiefilter implementeert in een ASP.NET Core-toepassing en hoe u het functiefilter gebruikt om functies voorwaardelijk in te schakelen.

Vereisten

Een aangepast functiefilter implementeren

In uw App Configuration-archief heeft de Bèta-functievlag een aangepast functiefilter met de naam Random. Dat filter heeft een Percentage parameter. Als u het functiefilter wilt implementeren, schakelt u de vlag Bèta-functie in op basis van de kans die is gedefinieerd door de Percentage parameter.

  1. Ga naar de map met het ASP.NET Core-toepassingsproject uit de quickstart voor functiebeheer die wordt vermeld in Vereisten.

  2. Voeg een RandomFilter.cs-bestand toe dat de volgende code bevat:

    using Microsoft.FeatureManagement;
    
    namespace TestAppConfig
    {
        [FilterAlias("Random")]
        public class RandomFilter : IFeatureFilter
        {
            private readonly Random _random;
    
            public RandomFilter()
            {
                _random = new Random();
            }
    
            public Task<bool> EvaluateAsync(FeatureFilterEvaluationContext context)
            {
                int percentage = context.Parameters.GetSection("Percentage").Get<int>();
    
                int randomNumber = _random.Next(100);
    
                return Task.FromResult(randomNumber <= percentage);
            }
        }
    }
    

    De RandomFilter klasse in de voorgaande code implementeert de IFeatureFilter interface uit de Microsoft.FeatureManagement bibliotheek. De IFeatureFilter interface heeft één methode met de naam EvaluateAsync, die wordt aangeroepen wanneer een functievlag wordt geëvalueerd. Met EvaluateAsynceen functiefilter wordt een functievlag ingeschakeld door terug te keren true.

    In deze code is de RandomFilter klasse ingericht met FilterAliasAttribute, waardoor uw filter de alias Randomkrijgt. Deze alias komt overeen met de filternaam in de vlag Bètafunctie in App Configuration.

  3. Open het Program.cs-bestand. Registreer u RandomFilter door een aanroep toe te voegen aan de AddFeatureFilter methode, zoals wordt weergegeven in de volgende code:

    // Existing code in Program.cs
    // ... ...
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement()
                    .AddFeatureFilter<RandomFilter>();
    
    // The rest of the existing code in Program.cs
    // ... ...
    

Het functiefilter toepassen

  1. Bouw uw app met behulp van de dotnet build opdracht. Voer het vervolgens uit met behulp van dotnet run.

  2. Zoek in de uitvoer van de dotnet run opdracht een URL waarop de web-app luistert. Open een browser en ga naar die URL.

  3. Vernieuw de browser een paar keer. Het bètamenu wordt soms weergegeven op de webpagina en soms niet. De bètafunctievlag wordt niet handmatig ingeschakeld en uitgeschakeld. De variatie wordt veroorzaakt door het willekeurige getal dat de RandomFilter implementatie van EvaluateAsync genereert wanneer de feature flag wordt geëvalueerd.

    Schermopname van een browser die is geopend naar localhost:7207. Tekst op de pagina geeft gegevens van Azure App Configuration weer. Er is geen bètamenu zichtbaar.

    Schermopname van een browser die is geopend naar localhost:7207. Tekst op de pagina geeft gegevens van Azure App Configuration weer. Er is een bètamenu gemarkeerd.

Volgende stappen

Ga verder met de volgende documenten voor meer informatie over ingebouwde functiefilters:

Ga naar het volgende document voor de volledige functierundown van de .NET-functiebeheerbibliotheek: