你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 ASP.NET Core 应用程序中启用使用自定义筛选器的条件功能

功能标志可以使用功能筛选器有条件地启用功能。 有关功能筛选器的详细信息,请参阅 使用功能筛选器启用条件功能

本指南介绍如何在 ASP.NET Core 应用程序中实现自定义功能筛选器,并使用功能筛选器有条件地启用功能。

Prerequisites

实现自定义功能筛选器

在应用配置存储区中, Beta 功能标志具有一个名为“ Random自定义功能筛选器”。 该筛选器具有参数 Percentage 。 若要实现功能筛选器,可以根据参数定义的几率启用 Percentage 功能标志。

  1. 先决条件中列出的功能管理快速入门中转到包含 ASP.NET 核心应用程序项目的文件夹。

  2. 添加包含以下代码 的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 来启用功能标志。

    在此代码中,类 RandomFilterFilterAliasAttribute修饰为别名,从而为筛选器提供别名 Random。 该别名与应用配置中 Beta 功能标志中的筛选器名称匹配。

  3. 打开 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
    // ... ...
    

应用功能筛选器

  1. 使用 dotnet build 命令生成应用。 然后使用dotnet run运行它。

  2. 在命令的 dotnet run 输出中,找到 Web 应用正在侦听的 URL。 打开浏览器并转到该 URL。

  3. 多次刷新浏览器。 Beta 菜单有时会显示在网页上,有时不会显示。 Beta 功能标志未被手动开启或关闭。 这种差异是由 EvaluateAsyncRandomFilter 方法在评估功能标志时生成的随机数造成的。

    打开到 localhost:7207 的浏览器的屏幕截图。页面上的文本显示 Azure 应用配置中的数据。没有 Beta 菜单可见。

    打开到 localhost:7207 的浏览器的屏幕截图。页面上的文本显示 Azure 应用配置中的数据。突出显示了 Beta 菜单。

Next steps

若要详细了解内置功能筛选器,请继续阅读以下文档:

有关 .NET 功能管理库的完整功能概述,请阅读以下文档以获取更多信息。