共用方式為


在 ASP.NET Core 應用程式中使用自訂篩選來啟用條件式功能

功能旗標可以使用功能篩選有條件地啟用功能。 若要深入瞭解功能篩選,請參閱 使用功能篩選器啟用條件式功能。

本指南中使用的範例是以功能管理 快速入門中引進的 ASP.NET Core 應用程式為基礎。 繼續進行之前,請先完成快速入門,以使用 Beta 功能旗標來建立 ASP.NET Core 應用程式。 完成後,您必須將自訂功能篩選新增至應用程式組態存放區中的 Beta 功能旗標。

在本指南中,您將瞭解如何實作自定義功能篩選,並使用功能篩選器有條件地啟用功能。

必要條件

實作自訂功能篩選

您已新增名為 Random 的自訂功能篩選,其在必要條件中包含 Beta 功能旗標的 Percentage 參數。 接下來,您將會實作功能篩選,以根據 Percentage 參數所定義的機率來啟用 Beta 功能旗標。

  1. 使用下列程式碼來新增 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);
            }
        }
    }
    

    您已從 Microsoft.FeatureManagement 程式庫新增實作 IFeatureFilter 介面的 RandomFilter 類別。 IFeatureFilter 介面具有名為 EvaluateAsync 的單一方法,會在評估功能旗標時予以呼叫。 在 EvaluateAsync 中,功能篩選會傳回 true 來啟用功能旗標。

    您已將 FilterAliasAttribute 裝飾為 RandomFilter,以為篩選提供別名 Random,其符合您在 Azure 應用程式組態 Beta 功能旗標中設定的篩選名稱。

  2. 開啟 Program.cs 檔案,並呼叫 AddFeatureFilter 方法來註冊 RandomFilter

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

功能篩選作用中

重新啟動應用程式並重新整理瀏覽器數次。 如果沒有手動切換功能旗標,將會看到 Beta 功能表有時會出現,有時也不會顯示。

隱藏 Beta 功能表的瀏覽器螢幕擷取畫面。

帶有 Beta 功能表的瀏覽器螢幕擷取畫面。

下一步

若要深入瞭解內建功能篩選器,請繼續進行下列檔。

如需 .NET 功能管理程式庫的完整功能摘要,請繼續參閱下列文件。