功能旗標可以使用功能篩選有條件地啟用功能。 如需功能篩選器的詳細資訊,請參閱 使用功能篩選啟用條件式功能。
本指南說明如何在 ASP.NET Core應用程式中實作自訂功能篩選器,以及使用功能篩選器有條件地啟用功能。
先決條件
- 當您完成 快速入門:將功能旗標新增至 ASP.NET Core 應用程式中的步驟後,您將建立一個具有 Beta 功能旗標的 ASP.NET Core 應用程式。 本指南以該功能管理快速入門為基礎而建置。
- 名為
Random的自訂功能篩選,已新增至 Azure App Configuration 存放區中的 Beta 功能旗標。 如需指示,請參閱 新增自訂功能篩選器。
實作自訂功能篩選
在您的 App Configuration 存放區中, Beta 功能 旗標具有名為 Random的自訂功能篩選器。 該過濾器有一個 Percentage 參數。 若要實作功能篩選器,您可以根據參數定義的機會啟用 Percentage 功能旗標。
從 必要條件中列出的功能管理快速入門移至包含 ASP.NET Core 應用程式專案的資料夾。
新增包含下列程式碼的 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 功能旗標不會手動開啟和關閉。 變化是由評估功能旗標時
RandomFilter的EvaluateAsync實作所產生的亂數所導致。
後續步驟
若要深入瞭解內建功能篩選器,請繼續閱讀下列文件:
如需 .NET 功能管理程式庫的完整功能概要,請繼續閱讀下列檔: