共用方式為


快速入門:將功能旗標新增至 ASP.NET Core 應用程式

在本快速入門中,您將在 Azure 應用程式設定中建立功能旗標,用以動態控制 ASP.NET Core 應用程式中的新網頁可用性,無需重新開機或重新部署。

功能管理支援會擴充應用程式設定中的動態設定功能。 本快速入門中的範例建置基礎是在動態設定教學課程中介紹過的 ASP.NET Core 應用程式。 繼續之前,請先完成快速入門教學課程,先使用動態設定建立 ASP.NET Core 應用程式。

必要條件

請依文件指示建立具有動態設定的 ASP.NET Core 應用程式。

建立功能旗標

將名為 Beta 的功能旗標新增至應用程式組態存放區 (在必要條件步驟中建立),並將 [標籤] 和 [描述] 保留為預設值。 如需如何使用 Azure 入口網站或 CLI 將功能旗標新增至存放區的詳細資訊,請移至建立功能旗標

啟用名稱為 Beta 的功能旗標

使用功能旗標

  1. 瀏覽至專案的目錄 (在必要條件步驟中建立),然後執行下列命令,將加入對 Microsoft.FeatureManagement.AspNetCore NuGet 套件的參考。

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. 開啟 Program.cs,再將呼叫新增至 AddAzureAppConfiguration 呼叫內的 UseFeatureFlags 方法。

    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(connectionString)
               // Load all keys that start with `TestApp:` and have no label
               .Select("TestApp:*", LabelFilter.Null)
               // Configure to reload configuration if the registered sentinel key is modified
               .ConfigureRefresh(refreshOptions =>
                    refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true));
    
        // Load all feature flags with no label
        options.UseFeatureFlags();
    });
    

    提示

    當沒有任何參數傳遞至 UseFeatureFlags 方法時,它會載入應用程式設定存放區中「所有無標籤」的功能旗標。 功能旗標的預設重新整理的間隔是 30 秒。 您可以透過 FeatureFlagOptions 參數自訂此行為。 例如,下列程式碼片段只會載入「機碼名稱」中以 TestApp: 開頭,且標籤為 dev 的功能旗標。 程式碼也會將重新整理的間隔時間變更為 5 分鐘。 請注意,此重新整理的間隔時間與一般的索引鍵值不同。

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. 呼叫 AddFeatureManagement 可將功能管理新增至應用程式的服務集合。

    使用下列程式碼更新 Program.cs

    // Existing code in Program.cs
    // ... ...
    
    builder.Services.AddRazorPages();
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement();
    
    // Bind configuration "TestApp:Settings" section to the Settings object
    builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings"));
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    

    在檔案頂端新增 using Microsoft.FeatureManagement; (如未出現)。

    注意

    針對 Blazor 應用程式,請參閱 將功能管理啟用為範圍服務的指示

  4. Pages 目錄下新增名為 Beta 的空白新 Razor 頁面。 包含 Beta.cshtmlBeta.cshtml.cs 這兩個檔案。

    開啟 Beta.cshtml,並使用下列標記予以更新:

    @page
    @model TestAppConfig.Pages.BetaModel
    @{
        ViewData["Title"] = "Beta Page";
    }
    
    <h1>This is the beta website.</h1>
    

    開啟 Beta.cshtml.cs,將 FeatureGate 屬性新增至 BetaModel 類別。 FeatureGate 屬性可確保只有在啟用 Beta 功能旗標後,才能存取 Beta 頁面。 如果未啟用 Beta 功能旗標,則頁面會傳回「404 找不到」錯誤訊息。

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace TestAppConfig.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }   
    
  5. 開啟 Pages/_ViewImports.cshtml,使用 @addTagHelper 指示詞註冊功能管理員 [標籤協助程式]。

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    上述程式碼可讓 <feature> 標籤協助程式用於專案的 . cshtml 檔案中。

  6. 開啟頁面/共用目錄中的 _Layout.cshtml。 在 [首頁] 與 [隱私權] 導覽列項目之間插入新的 <feature> 標籤,如下列醒目提示的這幾行。

    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">TestAppConfigNet3</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <feature name="Beta">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-page="/Beta">Beta</a>
                        </li>
                    </feature>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    

    <feature> 標記可確保只有在啟用 Beta 功能旗標後,[Beta] 功能表項目才會出現。

於本機建置並執行應用程式

  1. 若要使用 .NET Core CLI 來建置應用程式,請在命令殼層中執行下列命令:

    dotnet build
    
  2. 建置成功完成後,請執行下列命令以在本機執行 Web 應用程式:

    dotnet run
    
  3. 開啟瀏覽器視窗,然後移至 dotnet run 輸出中所顯示的 URL。 您的瀏覽器應該會顯示如下圖所示的頁面。

    啟用前的功能旗標

  4. 登入 Azure 入口網站。 選取 [所有資源],然後選取您之前建立的應用程式設定存放區。

  5. 選取 [功能管理員],找到 Beta 功能旗標。 選取 [啟用] 下的核取方塊,以啟用旗標。

  6. 重新整理瀏覽器數次。 重新整理的間隔時間範圍過後,頁面會顯示已更新的內容。

    啟用後的功能旗標

  7. 選取 [Beta] 功能表。 您即會前往以動態方式啟用的 Beta 網站。

    功能旗標 Beta 頁面

清除資源

如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。

重要

刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。

  1. 登入 Azure 入口網站,然後選取 [資源群組]
  2. 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
  3. 在結果清單中,選取資源群組名稱以查看概觀。
  4. 選取 [刪除資源群組]
  5. 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]

不久後,系統便會刪除該資源群組及其所有的資源。

下一步

在本快速入門中,您已在動態設定的上層,將功能管理功能新增至 ASP.NET Core 應用程式。 Microsoft.FeatureManagement.AspNetCore 程式庫提供豐富的 ASP.NET Core 應用程式整合,包括 MVC 控制器動作、Razor 頁面、檢視、路由和中介軟體的功能管理。 如需 .NET 功能管理程式庫的完整功能摘要,請繼續參閱下列文件。

雖然功能旗標可讓您啟用或停用應用程式中的功能,但您可能想要根據應用程式的邏輯自訂功能旗標。 功能篩選可讓您按條件啟用功能旗標。 如需詳細資訊,請繼續下列教學課程。

Azure 應用程式設定提供內建功能篩選器,讓您只能在特定期間或對應用程式的特定目標對象啟用功能旗標。 如需詳細資訊,請繼續下列教學課程。

若要啟用其他類型應用程式的功能管理功能,請繼續下列教學課程。

若要深入了解如何在 Azure 應用程式設定中管理功能旗標,請繼續下列教學課程。