教學課程:在 .NET Framework 應用程式中使用動態設定
應用程式組態中的資料可以作為應用程式設定載入 .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
開啟 [Program.cs],並新增下列命名空間。
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
新增兩個變數來儲存組態相關物件。
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;
使用指定的重新整理選項,更新連線至應用程式組態的
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
,如果已註冊金鑰變更,可以用於表示是否應該重新整理所有設定值。 在此範例中,只會重新整理金鑰 TestApp:Settings:Message。 在對應用程式組態提出檢查任何設定改變的新要求之前,SetCacheExpiration
方法會指定必須經過的最短時間。 在此範例中,您會覆寫 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
方法不會導致設定自動重新整理。 您可以從介面IConfigurationRefresher
呼叫TryRefreshAsync
方法來觸發重新整理。 此設計可避免傳送至 應用程式組態 的要求,即使您的應用程式閑置也一樣。 您可以將TryRefreshAsync
呼叫包含在您認為使用中的應用程式。 例如,當您在處理內送郵件、訂單或複雜工作的反覆項目時,就可以使用此呼叫。 如果您的應用程式隨時都在使用中,此呼叫也可以作為計時器使用。 在此範例中,當您按下 [輸入] 鍵時,就會呼叫TryRefreshAsync
。 請注意,即使呼叫TryRefreshAsync
因為任何原因而造成失敗,您的應用程式仍會繼續使用快取設定。 當過了設定快取的到期時間之後,而且應用程式活動再次觸發TryRefreshAsync
呼叫,將會再進行另一次嘗試。 在設定的快取到期時間過去之前,呼叫TryRefreshAsync
是不可操作的,因此即使頻繁呼叫,其對效能的影響也是最小的。
於本機建置並執行應用程式
將具名 ConnectionString 的環境變數設定為在您建立應用程式組態存放區時取得的唯讀金鑰連接字串。
如果您使用 Windows 命令提示字元,請執行下列命令:
setx ConnectionString "connection-string-of-your-app-configuration-store"
如果您使用 Windows PowerShell,請執行下列命令:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
重新啟動 Visual Studio,以讓變更生效。
按 Ctrl + F5 以建置並執行主控台應用程式。
在 Azure 入口網站中,瀏覽至您應用程式組態存放區的 [組態總管],並更新下列金鑰的值。
機碼 值 TestApp:Settings:Message Azure 應用程式組態的資料 - 已更新 回到執行中的應用程式,按 Enter 鍵以觸發重新整理,並在命令提示字元或 PowerShell 視窗中列印更新後的值。
注意
快取到期時間已使用
SetCacheExpiration
方法設定為 10 秒,並已指定重新整理作業的設定,因此,只有在該設定自上次重新整理後已經過至少 10 秒才會更新該組態設定的值。
清除資源
如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。
重要
刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。
- 登入 Azure 入口網站,然後選取 [資源群組]。
- 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
- 在結果清單中,選取資源群組名稱以查看概觀。
- 選取 [刪除資源群組]。
- 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]。
不久後,系統便會刪除該資源群組及其所有的資源。
下一步
在本教學課程中,您已啟用 .NET Framework 應用程式,以動態方式從應用程式組態重新整理組態設定。 如需了解如何在 ASP.NET Web 應用程式 (.NET Framework) 中啟用動態設定,請繼續進行下一個教學課程:
如需了解如何使用 Azure 受控識別簡化存取應用程式組態,請繼續進行下一個教學課程: