在 ASP.NET Core / .NET 8 設置期間訪問設置
ASP.NET Core 是由 Microsoft 提供的跨平台、開源的網頁框架,可以讓開發者高效地構建現代網頁應用程式和雲端原生應用程式。 在最新版本的 .NET 中,ASP.NET Core 繼續提供一個輕量、安全且靈活的平台,用於開發可在 Windows、Linux 和 macOS 上運行的網頁應用程式。
在本文中,我們將深入探討如何在 ASP.NET Core 的設定過程中存取組態設定,並參考 Tim Corey 的 10 分鐘培訓影片。 Tim 演示了開發者如何在 program.cs 中於依賴注入完成配置前存取組態值,這是創建靈活且易於維護的網頁應用程式的重要技術。
為何提早存取組態很重要
Tim Corey 開始時強調了在 ASP.NET Core 中應用程式設定的重要性。 據 Tim 所說,appsettings.json 是一個 "存儲組態的好地方",因為它允許開發者更改值而無需重新編譯或重新部署應用程式。
在網頁開發中,通常依賴於組態來設定服務,例如設定API的URL或調整特定環境的參數。 通常,在 .NET Core 的網頁應用程式中,開發者通過依賴注入來存取組態:
@inject IConfiguration config
然而,Tim 指出,有時您需要在設定過程中存取這些組態值,例如在 program.cs 中配置 HTTP 客戶端或其他服務時。 這樣做可以確保您的應用程式在不同環境(如開發、測試或生產)中保持靈活和適應性。
設定一個最小化的 Blazor 應用程式
為了演示,Tim 創建了一個簡單的 Blazor 應用程式,關閉互動功能以完全專注於 program.cs。 他強調,ASP.NET Core 的架構允許您將組態與程式碼分開,這使得管理網頁應用程式和雲端原生專案變得更容易。
這種方法也與 .NET 平台的跨平台特性一致,因為相同的組態邏輯可在 Windows、Linux 和 macOS 上不加修改地運行。
使用應用程式設定配置 HTTP 客戶端
Tim 帶領我們通過在 program.cs 中註冊 HTTP 客戶端的情境:
builder.Services.AddHttpClient("LocalAPI", client =>
{
client.BaseAddress = new Uri("https://localhost:7654");
});
雖然這樣設置有效,但 Tim 解釋了硬編碼 URL 並非理想的方式。 如果 API 端點更改,開發人員必須更新程式碼並創建一個合併請求來部署。 相反,他建議將值存儲在 appsettings.json 中:
{
"LocalAPI": "https://localapi.fromconfig"
}
這確保框架能夠動態拉取組態,避免重新編譯並減少部署過程中的錯誤。 它還符合安全和維護性良好的網頁應用程式的最佳實踐。
在 Program.cs 中存取組態
Tim 演示了如何在依賴注入前存取組態值:
var localApiBaseAddress = builder.Configuration.GetValue<string>("LocalAPI");
Tim 強調的關鍵點:
-
builder.Configuration 在 builder.Build() 之前可用。
-
值可以來自 appsettings.json、環境變量、用戶祕密,甚至 Azure Key Vault。
- 這樣可以動態配置服務、日誌或其他網頁框架組件。
Tim 設置了一個斷點來驗證 LocalAPI URL 是否正確檢索。 他指出此方法在所有支持的平台上都有效,使其成為跨平台開發的理想之選。
處理缺失的組態
Tim 針對組態鍵可能遺漏或為空的情況進行說明。 他展示了如何使用 GetValue 提供默認值:
var localApiBaseAddress = builder.Configuration.GetValue<string>("LocalAPI", "https://localhost:7654");
這確保即便組態未設置,您的應用程式也能準備好運行,提高錯誤處理和開發者的工作效率。 它還降低了在雲部署或不同平台上運行時出錯的可能性。
提早存取組態的好處
Tim 列舉了設置過程中拉取組態的幾個優點:
-
動態設置:像 HttpClient 這類服務可以使用特定環境的端點。
-
避免重新編譯:更改 URL 或其他設置不再需要改程式碼。
-
彈性記錄和服務:使用組態值配置日誌或其他網頁框架服務。
- 支持多個來源:組態可以來自 appsettings.json、環境變量、用戶祕密或雲端金鑰保管庫。
他強調這種方法將應用程式保持輕量且易於維護,同時充分利用 ASP.NET Core 框架和 .NET 平台。
運行和測試應用程式 (6:03–7:36)
Tim 示範如何清理程式碼並運行應用程式。他顯示 LocalAPI URL 是從組態中提取的,或者回到默認值:
var localApiBaseAddress = builder.Configuration.GetValue<string>("LocalAPI", "https://localhost:7654");
這種靈活的設置允許開發者繼續構建網頁應用程式,而無需擔心硬編碼的 URL 或因小更改而重複提交合併請求。 它還確保在 Linux、Windows 或 macOS 上的跨平台部署無縫銜接。
結論
Tim Corey 總結時強調,在 ASP.NET Core / .NET 8 中設置過程存取組態的簡便性和效率。採用:
builder.Configuration.GetValue()
開發者可以:
-
動態配置服務
-
避免在框架中硬編碼值
-
支持多個環境和平台
- 提高開發者工作效率和錯誤處理能力
這項技術對於創建安全、可維護和適應雲端的網頁應用程式至關重要。 Tim 的實用演示展示了即便是輕量、跨平台的 ASP.NET Core 應用程式,也可以是強大、靈活且準備好應對現代網頁開發的。
Tim Corey 的 影片 是開發者想掌握 ASP.NET Core 中組態管理的必看內容。 通過按照他的步驟,您可以確保您的應用程式靈活、可維護,並準備好進行跨平台部署、雲環境和現代網頁架構。
