Share via


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

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

Het voorbeeld dat in deze zelfstudie wordt gebruikt, is gebaseerd op de ASP.NET Core-toepassing die is geïntroduceerd in de quickstart voor functiebeheer. Voordat u verdergaat, voltooit u de quickstart om een ASP.NET Core-toepassing te maken met een bètafunctievlag . Zodra dit is voltooid, moet u een aangepast functiefilter toevoegen aan de vlag Bèta-functie in uw App Configuration-archief.

In deze zelfstudie leert u hoe u een aangepast functiefilter implementeert en het functiefilter gebruikt om functies voorwaardelijk in te schakelen.

Vereisten

Een aangepast functiefilter implementeren

U hebt een aangepast functiefilter toegevoegd met de naam Random met een parameter Percentage voor de bèta-functievlag in de vereisten. Vervolgens implementeert u het functiefilter om de vlag Bèta-functie in te schakelen op basis van de kans die is gedefinieerd door de parameter Percentage .

  1. Voeg een RandomFilter.cs bestand toe met de volgende code.

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

    U hebt een RandomFilter klasse toegevoegd waarmee de IFeatureFilter interface uit de Microsoft.FeatureManagement bibliotheek wordt geïmplementeerd. 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.

    U hebt een FilterAliasAttribute versie ingericht om RandomFilter uw filter een alias Random te geven, die overeenkomt met de filternaam die u hebt ingesteld in de bètafunctievlag in Azure-app Configuratie.

  2. Open het Program.cs-bestand en registreer het RandomFilter door de methode aan te AddFeatureFilter roepen.

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

Functiefilter in actie

Start de toepassing opnieuw en vernieuw de browser een paar keer. Zonder handmatig de functievlag te wijzigen, ziet u dat het bètamenu soms wordt weergegeven en soms niet.

Schermopname van browser met bètamenu verborgen.

Schermopname van browser met bètamenu.

Volgende stappen

Ga verder met de volgende zelfstudies voor meer informatie over de ingebouwde functiefilters.

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