在 ASP.NET Core / .NET 8 中設置過程中的設置存取
[[academy-video-youtube({"vid": "yD-pB1LNXHc", "start_time": "0", "title": "在ASP.NET Core / .NET 8中設置期間存取設定", "creator": "Tim Corey", "length": "8分02秒"})]]
ASP.NET Core 是由微軟推出的跨平台、開源的網頁框架,允許開發者高效地建立現代的網頁應用程式和雲端原生應用程式。 隨著 .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 解釋硬編碼網址不是理想的做法。 如果API端點發生變更,開發者必須更新程式碼並建立 pull request 以便部署。 因此,他建議將該值儲存在 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 探討了一些配置鍵可能缺失或為 null 的情形。 他展示了可以使用 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<t>()開發者可以:
動態配置服務
避免在框架中硬編碼值
支持多個環境和平台
- 改善開發者的生產效率和錯誤處理
這項技術對於建立安全、可維護和雲就緒的網頁應用程式至關重要。 Tim 的實用演示強調,即便是輕量、跨平台的 ASP.NET Core 應用程式也可以是穩健、靈活並且適合現代網頁開發的準備。
Tim Corey 的影片是開發者掌握 ASP.NET Core 配置管理必看的影片。 遵循他的步驟,您可以確保您的應用程式是靈活、易於維護,並準備好進行跨平台部署、雲端環境以及現代網頁架構。

