教學課程:在 .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

  2. 開啟 Program.cs 並新增下列命名空間。

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

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Main使用指定的重新整理選項更新 方法以連線至 應用程式組態。

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:`.
                    .Select("TestApp:*")
                    // Configure to reload the key 'TestApp:Settings:Message' if it is modified.
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    在方法中ConfigureRefresh,應用程式組態 存放區內的密鑰會註冊以進行變更監視。 Register方法有選擇性的布爾值參數refreshAll,可用來指出如果已註冊的密鑰變更,是否應該重新整理所有組態值。 在此範例中,只會重新整理 Key TestApp:設定:Message。 方法SetCacheExpiration會指定在提出新要求之前必須經過的最小時間,才能 應用程式組態 檢查是否有任何組態變更。 在此範例中,您會覆寫預設的到期時間為 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單獨呼叫 方法並不會讓設定自動重新整理。 您可以從介面IConfigurationRefresher呼叫 TryRefreshAsync 方法來觸發重新整理。 此設計是避免傳送至 應用程式組態 的要求,即使應用程式閑置也一樣。 您可以包含 TryRefreshAsync 您考慮使用中應用程式的呼叫。 例如,當您處理傳入訊息、訂單或複雜工作的反覆專案時,可能是它。 如果您的應用程式一直處於作用中狀態,也可能在定時器中。 在這裡範例中,您會在按下 Enter 鍵時呼叫 TryRefreshAsync 。 請注意,即使呼叫 TryRefreshAsync 因任何原因而失敗,您的應用程式仍會繼續使用快取的組態。 當已設定的快取到期時間經過,而且再次由您的應用程式活動觸發呼叫時, TryRefreshAsync 將會進行另一次嘗試。 在設定的快取到期時間經過之前,呼叫 TryRefreshAsync 是無作業,因此其效能影響最小,即使經常呼叫也一樣。

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

  1. 將名為 連線 ionString 的環境變數設定為 應用程式組態 存放區建立期間取得的唯讀密鑰 連接字串。

    如果您使用 Windows 命令提示字元,請執行下列命令:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

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

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    
  2. 重新啟動 Visual Studio 以允許變更生效。

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

    App launch local

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

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

    App refresh local

    注意

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

清除資源

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

重要

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

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

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

下一步

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

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