Udostępnij za pośrednictwem


Włączanie funkcji warunkowych przy użyciu filtru niestandardowego w aplikacji ASP.NET Core

Flagi funkcji mogą używać filtrów funkcji w celu warunkowego włączania funkcji. Aby dowiedzieć się więcej na temat filtrów funkcji, zobacz Włączanie funkcji warunkowych z filtrami funkcji.

Przykład używany w tym przewodniku jest oparty na aplikacji ASP.NET Core wprowadzonej w przewodniku Szybki start dotyczącym zarządzania funkcjami. Przed kontynuowaniem ukończ przewodnik Szybki start, aby utworzyć aplikację ASP.NET Core z flagą funkcji beta . Po zakończeniu należy dodać niestandardowy filtr funkcji do flagi funkcji beta w magazynie App Configuration.

W tym przewodniku dowiesz się, jak zaimplementować niestandardowy filtr funkcji i użyć filtru funkcji w celu warunkowego włączenia funkcji.

Wymagania wstępne

Implementowanie niestandardowego filtru funkcji

Dodano niestandardowy filtr funkcji o nazwie Random z parametrem Procent dla flagi funkcji beta w wymaganiach wstępnych. Następnie zaimplementujesz filtr funkcji, aby włączyć flagę funkcji beta na podstawie prawdopodobieństwa zdefiniowanego przez parametr Percentage .

  1. RandomFilter.cs Dodaj plik z następującym kodem.

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

    Dodano klasę RandomFilter , która implementuje IFeatureFilter interfejs z biblioteki Microsoft.FeatureManagement . Interfejs IFeatureFilter ma jedną metodę o nazwie EvaluateAsync, która jest wywoływana za każdym razem, gdy zostanie obliczona flaga funkcji. W EvaluateAsyncsystemie filtr funkcji włącza flagę funkcji, zwracając wartość true.

    Element został ozdobiony wartością FilterAliasAttribute RandomFilter , aby nadać filtrowi alias Losowy, który jest zgodny z nazwą filtru ustawioną w flagi funkcji Beta w konfiguracji aplikacja systemu Azure.

  2. Otwórz plik Program.cs i zarejestruj RandomFilter go, wywołując metodę AddFeatureFilter .

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

Filtr funkcji w akcji

Uruchom ponownie aplikację i odśwież przeglądarkę kilka razy. Bez ręcznego przełączania flagi funkcji zobaczysz, że menu beta jest czasami wyświetlane, a czasami nie.

Zrzut ekranu przedstawiający przeglądarkę z ukrytym menu beta.

Zrzut ekranu przedstawiający przeglądarkę z menu beta.

Następne kroki

Aby dowiedzieć się więcej na temat wbudowanych filtrów funkcji, przejdź do następujących dokumentów.

Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu.