功能标志可以使用功能筛选器有条件地启用功能。 有关功能筛选器的详细信息,请参阅 使用功能筛选器启用条件功能。
本指南介绍如何在 ASP.NET Core 应用程序中实现自定义功能筛选器,并使用功能筛选器有条件地启用功能。
先决条件
- ASP.NET Core 应用程序,其中包含一个名为Beta的功能标志,在您完成步骤时创建于快速入门:向 ASP.NET Core 应用添加功能标志。 本指南在该功能管理快速入门的基础上扩展。
- 一个名为
Random的自定义功能筛选器,已添加到 Azure 应用配置存储中的 Beta 功能标志。 有关说明,请参阅 “添加自定义功能筛选器”。
实现自定义功能筛选器
在应用配置存储区中, Beta 功能标志具有一个名为“ Random自定义功能筛选器”。 该筛选器具有参数 Percentage 。 若要实现功能筛选器,可以根据参数定义的几率启用 Percentage 功能标志。
从 先决条件中列出的功能管理快速入门中转到包含 ASP.NET 核心应用程序项目的文件夹。
添加包含以下代码 的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来启用功能标志。在此代码中,类
RandomFilter被FilterAliasAttribute修饰为别名,从而为筛选器提供别名Random。 该别名与应用配置中 Beta 功能标志中的筛选器名称匹配。打开 Program.cs 文件。 通过添加对
RandomFilter方法的调用进行注册AddFeatureFilter,如以下代码所示:// 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 // ... ...
应用功能筛选器
使用
dotnet build命令生成应用。 然后使用dotnet run运行它。在命令的
dotnet run输出中,找到 Web 应用正在侦听的 URL。 打开浏览器并转到该 URL。多次刷新浏览器。 Beta 菜单有时会显示在网页上,有时不会显示。 Beta 功能标志未被手动开启或关闭。 变体是由
RandomFilterEvaluateAsync实现生成的随机数在评估特性标志时引起的。
后续步骤
若要详细了解内置功能筛选器,请继续阅读以下文档:
有关 .NET 功能管理库的完整功能概述,请阅读以下文档以获取更多信息。