Включение условных функций с помощью пользовательского фильтра в приложении ASP.NET Core
Флаги компонентов могут использовать фильтры компонентов для условного включения функций. Дополнительные сведения о фильтрах функций см. в статье "Включение условных функций" с помощью фильтров компонентов.
Пример, используемый в этом руководстве, основан на приложении ASP.NET Core, представленном в кратком руководстве по управлению функциями. Прежде чем продолжить, выполните краткое руководство по созданию приложения ASP.NET Core с флагом бета-функции . После завершения необходимо добавить пользовательский фильтр компонентов в флаг бета-функции в хранилище Конфигурация приложений.
В этом руководстве вы узнаете, как реализовать пользовательский фильтр компонентов и использовать фильтр компонентов для условного включения функций.
Необходимые компоненты
- Создайте приложение ASP.NET Core с флагом компонента.
- Добавление настраиваемого фильтра компонентов в флаг компонента
Реализация настраиваемого фильтра компонентов
Вы добавили пользовательский фильтр функций с именем Random с параметром "Процент" для флага бета-функции в предварительных требованиях. Затем вы реализуете фильтр функций, чтобы включить флаг бета-функции на основе вероятности, определенной параметром Percentage .
RandomFilter.cs
Добавьте файл со следующим кодом.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); } } }
Вы добавили
RandomFilter
класс, реализующийIFeatureFilter
интерфейс из библиотекиMicrosoft.FeatureManagement
. ИнтерфейсIFeatureFilter
имеет один метод с именемEvaluateAsync
, который вызывается при оценке флага компонента. ВEvaluateAsync
фильтре функций флаг компонента включается возвращаемыйtrue
флаг компонента.Вы декорировали фильтр
FilterAliasAttribute
RandomFilter
, чтобы дать фильтру псевдоним Случайный, который соответствует имени фильтра, заданному в флаге бета-функции в Конфигурация приложений Azure.Откройте файл Program.cs и зарегистрируйте его
RandomFilter
, вызвав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 // ... ...
Фильтр компонентов в действии
Повторно запустите приложение и обновите браузер несколько раз. Без переключения флага функции вручную вы увидите, что меню бета-версии иногда отображается и иногда не отображается.
Следующие шаги
Дополнительные сведения о встроенных фильтрах функций см. в следующих документах.
Для полного запуска функции библиотеки управления функциями .NET перейдите к следующему документу.