Dela via


Aktivera villkorsstyrda funktioner med ett anpassat filter i ett ASP.NET Core-program

Funktionsflaggor kan använda funktionsfilter för att aktivera funktioner villkorligt. Mer information om funktionsfilter finns i Aktivera villkorsstyrda funktioner med funktionsfilter.

Den här guiden visar hur du implementerar ett anpassat funktionsfilter i ett ASP.NET Core-program och använder funktionsfiltret för att aktivera funktioner villkorligt.

Förutsättningar

Implementera ett anpassat funktionsfilter

I din App Configuration-butik har flaggan Beta ett anpassat funktionsfilter med namnet Random. Det filtret har en Percentage parameter. Om du vill implementera funktionsfiltret aktiverar du betafunktionsflaggan baserat på den chans som definieras av parameternPercentage.

  1. Gå till mappen som innehåller ASP.NET Core-programprojektet från snabbstarten för funktionshantering som visas i Krav.

  2. Lägg till en RandomFilter.cs fil som innehåller följande kod:

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

    Klassen RandomFilter i föregående kod implementerar IFeatureFilter gränssnittet från Microsoft.FeatureManagement biblioteket. Gränssnittet IFeatureFilter har en enda metod med namnet EvaluateAsync, som anropas när en funktionsflagga utvärderas. I EvaluateAsyncaktiverar ett funktionsfilter en funktionsflagga genom att truereturnera .

    I den RandomFilter här koden är klassen dekorerad med FilterAliasAttribute, vilket ger filtret aliaset Random. Det aliaset matchar filternamnet i funktionsflaggan Beta i App Configuration.

  3. Öppna filen Program.cs . Genom att lägga till ett anrop till RandomFilter-metoden, registrerar AddFeatureFilter enligt följande kod:

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

Använd funktionsfiltret

  1. Skapa din app med hjälp dotnet build av kommandot . Kör den sedan med hjälp av dotnet run.

  2. I utdata från kommandot dotnet run hittar du en URL som webbappen lyssnar på. Öppna en webbläsare och gå till webbadressen.

  3. Uppdatera webbläsaren några gånger. Beta-menyn visas ibland på webbsidan, och ibland inte. Beta-funktionsflaggan aktiveras och inaktiveras inte manuellt. Varianten orsakas av det slumptal som implementeringen RandomFilter av EvaluateAsync genererar när funktionsflaggan utvärderas.

    Skärmbild av en webbläsare som är öppen för localhost:7207. Text på sidan anger Data från Azure App Configuration. Ingen Beta-meny visas.

    Skärmbild av en webbläsare som är öppen för localhost:7207. Text på sidan anger Data från Azure App Configuration. En Beta-meny är markerad.

Nästa steg

Om du vill veta mer om inbyggda funktionsfilter fortsätter du till följande dokument:

För en fullständig funktionsöversikt av .NET-funktionshanteringsbiblioteket, gå vidare till följande dokument.