應用程式組態中的資料可以作為應用程式設定載入 .NET Framework 應用程式。 如需詳細資訊,請參閱快速入門。 然而,與 .NET Framework 所設計的相同,應用程式設定只能在應用程式重新開機時重新整理。 應用程式組態 .NET 提供者為 .NET Standard 程式庫。 其支援動態快取和重新整理設定,不需重新啟動應用程式。 本教學課程會示範您可以如何在 .NET Framework 主控台應用程式中執行動態設定更新。
在本教學課程中,您會了解如何:
- 設定您的 .NET Framework 應用程式,使其在應用程式組態存放區發生變更時更新其組態。
- 在您的應用程式中插入最新的組態。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立一個。
- 應用程式組態存放區,如 建立存放區的教學課程所示。
- Visual Studio
- .NET Framework 4.7.2 或更新版本
新增金鑰值
將下列索引鍵/值新增至應用程式組態存放區,並保留標籤和內容類型的預設值。 如需有關如何使用 Azure 管理入口網站或 CLI 把索引鍵/值新增至存放區的更多詳細資訊,請參閱建立索引鍵/值。
| 鑰匙 | 價值 |
|---|---|
| TestApp:Settings:Message | Azure 應用程式組態的資料 |
建立 .NET Framework 主控台應用程式
啟動 Visual Studio 並選取 [建立新專案]。
在 [建立新專案] 中,篩選 [主控台] 專案類型,然後從專案範本清單中選取 [主控台應用程式 (.NET Framework)] 與 C#。 按 [下一步]。
在 [設定您的新專案] 中,輸入專案名稱。 在 [架構] 下,選取 [.NET Framework 4.7.2] 或更新版本。 按下 建立。
從應用程式設定重新載入資料
以滑鼠右鍵按一下專案,然後選取 [管理 NuGet 套件]。 在 [瀏覽] 索引標籤中,搜尋下列 NuGet 套件最新版本,並新增至您的專案。
- Microsoft.Extensions.Configuration.AzureAppConfiguration
- Azure.Identity
開啟 [Program.cs],並新增下列命名空間。
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration; using Azure.Identity;新增兩個變數來儲存組態相關物件。
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;使用指定的重新整理選項,更新連線至應用程式組態的
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 秒,以示範用途。新增名為
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是不可操作的,因此即使頻繁呼叫,其對效能的影響也是最小的。
於本機建置並執行應用程式
設定環境變數。
將名為
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>'重新啟動 Visual Studio,以讓變更生效。
按 Ctrl + F5 以建置並執行主控台應用程式。
在 Azure 入口網站中,瀏覽至您應用程式組態存放區的 [組態總管],並更新下列金鑰的值。
鑰匙 價值 TestApp:Settings:Message Azure 應用程式組態的資料 - 已更新 回到執行中的應用程式,按 Enter 鍵以觸發重新整理,並在命令提示字元或 PowerShell 視窗中列印更新後的值。
附註
由於重新整理間隔是在指定重新整理作業的組態時使用
SetRefreshInterval方法設定為10秒,因此只有在該設定上次重新整理之後至少經過10秒時,才會更新組態設定的值。
清除資源
如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。
重要
刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。
- 登入 Azure 入口網站,然後選取 [資源群組]。
- 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
- 在結果清單中,選取資源群組名稱以查看概觀。
- 選取 [刪除資源群組]。
- 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]。
不久後,系統便會刪除該資源群組及其所有的資源。
下一步
在本教學課程中,您已啟用 .NET Framework 應用程式,以動態方式從應用程式組態重新整理組態設定。 如需了解如何在 ASP.NET Web 應用程式 (.NET Framework) 中啟用動態設定,請繼續進行下一個教學課程:
如需了解如何使用 Azure 受控識別簡化存取應用程式組態,請繼續進行下一個教學課程: