你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
功能标志可以使用功能筛选器有条件地启用功能。 有关功能筛选器的详细信息,请参阅 使用功能筛选器启用条件功能。
本指南介绍如何在 ASP.NET Core 应用程序中实现自定义功能筛选器,并使用功能筛选器有条件地启用功能。
Prerequisites
- 按照“快速入门:在 ASP.NET Core 应用中添加功能标记”中的步骤完成操作后,你创建的 ASP.NET Core 应用将包含一个名为“Beta”的功能标记。 本指南是在该功能管理快速入门指南基础上进一步扩展而成。
- 一个名为
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 文件。 通过添加对
AddFeatureFilter方法的调用注册RandomFilter,如以下代码所示:// 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 功能标志未被手动开启或关闭。 这种差异是由
EvaluateAsync的RandomFilter方法在评估功能标志时生成的随机数造成的。
Next steps
若要详细了解内置功能筛选器,请继续阅读以下文档:
有关 .NET 功能管理库的完整功能概述,请阅读以下文档以获取更多信息。