共用方式為


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

功能旗標可以使用功能篩選有條件地啟用功能。 如需功能篩選器的詳細資訊,請參閱 使用功能篩選啟用條件式功能

本指南說明如何在 ASP.NET Core應用程式中實作自訂功能篩選器,以及使用功能篩選器有條件地啟用功能。

先決條件

  • 當您完成 快速入門:將功能旗標新增至 ASP.NET Core 應用程式中的步驟後,您將建立一個具有 Beta 功能旗標的 ASP.NET Core 應用程式。 本指南以該功能管理快速入門為基礎而建置。
  • 名為 Random的自訂功能篩選,已新增至 Azure App Configuration 存放區中的 Beta 功能旗標。 如需指示,請參閱 新增自訂功能篩選器

實作自訂功能篩選

在您的 App Configuration 存放區中, Beta 功能 旗標具有名為 Random的自訂功能篩選器。 該過濾器有一個 Percentage 參數。 若要實作功能篩選器,您可以根據參數定義的機會啟用 Percentage 功能旗標。

  1. 必要條件中列出的功能管理快速入門移至包含 ASP.NET Core 應用程式專案的資料夾。

  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 來啟用功能旗標。

    在此程式碼中,RandomFilter類別被FilterAliasAttribute裝飾,因此會賦予您的濾鏡一個別名Random。 該別名符合 [應用程式設定] 中 Beta 功能旗標中的篩選器名稱。

  3. 開啟 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
    // ... ...
    

套用功能篩選器

  1. 使用命令 dotnet build 建置您的應用程式。 然後使用 dotnet run來執行它。

  2. 在命令的 dotnet run 輸出中,尋找 Web 應用程式正在接聽的 URL。 開啟瀏覽器並前往該 URL。

  3. 重新整理瀏覽器數次。 Beta 菜單有時會出現在網頁上,有時則不會。 Beta 功能旗標不會手動開啟和關閉。 變化是由評估功能旗標時 RandomFilterEvaluateAsync 實作所產生的亂數所導致。

    開啟 localhost:7207 的瀏覽器螢幕擷取畫面。頁面上的文字會指出 [來自 Azure 應用程式設定的資料]。看不到 Beta 菜單。

    開啟 localhost:7207 的瀏覽器螢幕擷取畫面。頁面上的文字指出 [來自 Azure 應用程式組態的資料]。已反白顯示 [搶鮮版 (Beta)] 功能表。

後續步驟

若要深入瞭解內建功能篩選器,請繼續閱讀下列文件:

如需 .NET 功能管理程式庫的完整功能概要,請繼續閱讀下列檔: