共用方式為


教學課程:在 .NET Framework 應用程式中使用動態設定

應用程式組態中的資料可以作為應用程式設定載入 .NET Framework 應用程式。 如需詳細資訊,請參閱快速入門。 然而,與 .NET Framework 所設計的相同,應用程式設定只能在應用程式重新開機時重新整理。 應用程式組態 .NET 提供者為 .NET Standard 程式庫。 其支援動態快取和重新整理設定,不需重新啟動應用程式。 本教學課程會示範您可以如何在 .NET Framework 主控台應用程式中執行動態設定更新。

在本教學課程中,您會了解如何:

  • 設定您的 .NET Framework 應用程式,使其在應用程式組態存放區發生變更時更新其組態。
  • 在您的應用程式中插入最新的組態。

必要條件

新增金鑰值

將下列索引鍵/值新增至應用程式組態存放區,並保留標籤內容類型的預設值。 如需有關如何使用 Azure 管理入口網站或 CLI 把索引鍵/值新增至存放區的更多詳細資訊,請參閱建立索引鍵/值

鑰匙 價值
TestApp:Settings:Message Azure 應用程式組態的資料

建立 .NET Framework 主控台應用程式

  1. 啟動 Visual Studio 並選取 [建立新專案]

  2. 在 [建立新專案] 中,篩選 [主控台] 專案類型,然後從專案範本清單中選取 [主控台應用程式 (.NET Framework)] 與 C#。 按 [下一步]

  3. 在 [設定您的新專案] 中,輸入專案名稱。 在 [架構] 下,選取 [.NET Framework 4.7.2] 或更新版本。 按下 建立

從應用程式設定重新載入資料

  1. 以滑鼠右鍵按一下專案,然後選取 [管理 NuGet 套件]。 在 [瀏覽] 索引標籤中,搜尋下列 NuGet 套件最新版本,並新增至您的專案。

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. 開啟 [Program.cs],並新增下列命名空間。

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    using Azure.Identity;
    
  3. 新增兩個變數來儲存組態相關物件。

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. 使用指定的重新整理選項,更新連線至應用程式組態的 Main 方法。 使用 Microsoft Entra ID 連接至應用程式設定(建議),或使用連接字串。

    您可以使用 DefaultAzureCredential 來向 應用程式組態 存放區進行驗證。 請遵循指示,將 [應用程式組態資料讀取者角色] 指派給您的認證。 在執行應用程式之前,請確保留出足夠的時間來散佈權限。

    // Existing code in Program.cs
    // ... ...
    
    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh =>
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(TimeSpan.FromSeconds(10));
                   });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    
    // The rest of existing code in Program.cs
    // ... ...
    

    ConfigureRefresh 方法內,您可以呼叫 RegisterAll 方法,指示應用程式組態提供者在偵測到任何選取的索引鍵/值 (開頭為 TestApp: 且沒有標籤的項目) 有所變更時重新載入整個設定。 如需監視組態變更的詳細資訊,請參閱 設定重新整理的最佳做法

    在傳送新的要求來檢查應用程式組態中是否有任何設定更改之前,SetRefreshInterval 方法會指定必須經過的最短時間。 在此範例中,您會修改 30 秒的預設到期時間,改為 10 秒,以示範用途。

  5. 新增名為 PrintMessage() 的方法,以從應用程式組態觸發設定資料更新。

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    
        // Wait for the user to press Enter
        Console.ReadLine();
    
        await _refresher.TryRefreshAsync();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
    

    單獨呼叫 ConfigureRefresh 方法不會導致設定自動重新整理。 您可以從介面 TryRefreshAsync 呼叫 IConfigurationRefresher 方法來觸發重新整理。 此設計是為避免當您的應用程式閒置時,傳送要求至應用程式組態。 您可以在您認為應用程式處於活躍狀態時呼叫 TryRefreshAsync。 例如,您可能會在處理內送郵件、訂單或複雜任務的迭代時,使用此工具。 如果您的應用程式隨時都在使用中,此呼叫也可以作為計時器使用。 在此範例中,當您按下 [輸入] 鍵時,就會呼叫 TryRefreshAsync。 請注意,即使呼叫 TryRefreshAsync 因為任何原因而造成失敗,您的應用程式仍會繼續使用快取設定。 當設定的重新整理間隔已過,並且您的應用程式活動再次觸發 TryRefreshAsync 呼叫時,將會進行另一次嘗試。 在設定的重新整理間隔過去之前,呼叫 TryRefreshAsync 是不可操作的,因此即使頻繁呼叫,其對效能的影響也是最小的。

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

  1. 設定環境變數。

    將名為 Endpoint 的環境變數設定為在 Azure 入口網站的市集概述中找到的您的應用程式組態存放區端點。

    如果您使用 Windows 命令提示字元,請執行下列命令,然後重新啟動命令提示字元以讓變更生效:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    如果您使用 PowerShell,請執行下列命令:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    如果您使用 macOS 或 Linux,請執行下列命令:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. 重新啟動 Visual Studio,以讓變更生效。

  3. 按 Ctrl + F5 以建置並執行主控台應用程式。

    應用程式在本機啟動

  4. 在 Azure 入口網站中,瀏覽至您應用程式組態存放區的 [組態總管],並更新下列金鑰的值。

    鑰匙 價值
    TestApp:Settings:Message Azure 應用程式組態的資料 - 已更新
  5. 回到執行中的應用程式,按 Enter 鍵以觸發重新整理,並在命令提示字元或 PowerShell 視窗中列印更新後的值。

    應用程式更新本地

    附註

    由於重新整理間隔是在指定重新整理作業的組態時使用 SetRefreshInterval 方法設定為10秒,因此只有在該設定上次重新整理之後至少經過10秒時,才會更新組態設定的值。

清除資源

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

重要

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

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

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

下一步

在本教學課程中,您已啟用 .NET Framework 應用程式,以動態方式從應用程式組態重新整理組態設定。 如需了解如何在 ASP.NET Web 應用程式 (.NET Framework) 中啟用動態設定,請繼續進行下一個教學課程:

如需了解如何使用 Azure 受控識別簡化存取應用程式組態,請繼續進行下一個教學課程: