IRONSOFTWAREHOME

在 Azure Functions 中存取應用程式設置

Accessing AppSettings in Console Apps Including Secrets.json

Tim Corey

23m 53s

在當今快速演變的雲端環境中,安全且靈活地管理應用設定至關重要——尤其對於使用Azure Functions進行開發的開發者而言。 無論您是透過Azure入口網站部署函式應用,使用Azure Functions Core Tools管理配置設定,或透過Key Vault設置機密,從一開始正確構建應用配置結構是至關重要的。

在名為"Accessing AppSettings in Console Apps Including Secrets.json"的實踐課程中,Tim Corey介紹了使用.NET生態系統的最佳實踐。 雖然重點在於控制台應用,但他的概念直接應用於開發和管理Azure Functions應用的函式應用設定——尤其是在本地工作、設置專案文件或部署到App Service時。

在本文中,我們將分解Tim的結構,並將他的課程應用於現代Azure Functions開發。

為什麼應用程式設定對於Azure Functions很重要

Tim首先指出,當構建超出最基本的.NET應用程式時,應用程式設置有多麼重要。在Azure Function環境中,存取應用程式設置的需求更為顯著——因為Azure Functions運行時預期從受管儲存(如環境變數、基於JSON的local.settings.json或Azure App Configuration)中獲取配置值。

"開發人員常常想要存取設置檔案是一個常見的特點,"Tim在0:17解釋道。

無論是API密鑰、連接字串還是功能標誌,配置靈活性和安全性至關重要——尤其是當部署到像Microsoft Azure這樣的雲平台時。

使用Visual Studio建立基礎

在1:24時,Tim使用Visual Studio設置了一個名為SettingsDemoApp的控制台專案。雖然Azure開發者通常會使用Azure Functions Core Tools初始化Functions專案,但Tim的腳手架和程式碼組織方法可以無縫轉譯。 專案文件設置和程式碼結構是關鍵基礎——無論您是在控制台環境中還是以隔離工作模型構建孤立的Azure Functions應用。

安裝所需的NuGet包

從2:33開始,Tim介紹了安裝四個基本的NuGet包:

  • Microsoft.Extensions.Configuration

  • Microsoft.Extensions.Configuration.Json

  • Microsoft.Extensions.Configuration.Binder

  • Microsoft.Extensions.Configuration.UserSecrets

這反映了Azure Functions的應用配置系統,該系統在後台依賴於相同的包。 Tim強調了模組化的價值:

"這其實是與冗餘相反的,"他指出,.NET Core避免了不必要的負載,讓開發者可以透過NuGet選擇使用。

對於典型的函式應用,這些包要麼是預先引用的,要麼很容易新增,以支持自定義邏輯的配置設置、依賴注入或支持Key Vault和Azure App Configuration等高級用例。

新增和配置JSON設置文件

在6:12,Tim建立了一個名為appsettings.json的新文件,模仿您在Azure Functions開發中看到的local.settings.json的結構。 他用如下的鍵值對將其填充:

{
  "User": {
    "FirstName": "Tim",
    "LastName": "Corey"
  },
  "StarterCountValue": 5
}
Text

在本地函式中,開發者使用幾乎相同格式的local.settings.json,透過注入的IConfiguration將值讀入他們的應用邏輯。 Tim還強調了一個關鍵步驟:將文件的"複製到輸出目錄"設置為"如果較新則複製"——這對於確保您的配置在運行時可用至關重要。

手動構建配置管道

Tim接著編寫了手動設置配置管道的程式碼:

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Text

雖然Azure Functions運行時會自動處理此管道,但Tim的分解說明了函式專案如何從不同來源導入值。 他對.AddJsonFile()的使用模仿了開發者如何在Azure應用中配置local.settings.json,reloadOnChange引入了在開發過程中動態刷新配置設置的概念。

以型別安全方式讀取值

Tim展示了如何在11:00使用GetValue()方法讀取設置:

int count = config.GetValue<int>("StarterCountValue");
Text

至於巢狀的設置,他使用:

string firstName = config.GetValue<string>("User:FirstName");
Text

在Azure Functions中,這些相同的語法模式適用。 Tim用冒號分隔的鍵("User:FirstName")在環境變數中以雙下劃線(__)語法直接映射:

User__FirstName=Tim
Text

這在部署到Azure App Service或透過Azure入口網站配置時特別有用,您可以使用應用設置或基於環境的覆蓋來在運行時覆蓋設置。

使用UserSecrets安全地處理機密

在15:00,Tim透過User Secrets介紹了secrets.json模式,用於儲存敏感資料,如API密鑰或連接字串,而不在源程式碼管理中暴露它們。 他展示如何使用這行程式碼將User Secrets儲存附加到您的專案:

builder.AddUserSecrets<Program>();
Text

他強調順序很重要——User Secrets會覆蓋較早的配置來源,加強了最後一個佔優的原則。 雖然Azure Functions不直接使用secrets.json,但在生產雲端環境中,您將使用Azure Key Vault,選擇使用受管理的身份驗證,以實現相同的安全覆蓋。

Tim指出,本地開發中的機密是您在生產中使用的任何安全系統的替代品:

"這個secrets.json是您用來儲存實際值的任何安全系統的替代品——無論是Key Vault還是環境設置。"

運行並驗證配置

在設置完appsettings.json和secrets.json之後,Tim運行了範例並驗證了機密覆蓋了基礎值。 這直接反映了Azure Functions如何從多個來源:local.settings.json、Azure App Configuration、環境變數或Key Vault中處理覆蓋。

無論是透過命令行使用Azure Functions Core Tools,還是透過Visual Studio進行部署,應用配置的載入順序和分層行為完全如Tim所述。

配置管理的最佳實踐

Tim在最後建議將不經常變更的配置值(例如功能標誌、頻率設置或CORS配置)留在您的JSON文件中,並將敏感資料(如連接字串和機密)放在安全儲存中。

這與現代Azure Functions的最佳實踐一致,在這裡:

  • 開發人員在本地使用local.settings.json

  • 團隊使用Azure入口網站進行應用設置

  • 機密進入Key Vault

  • Azure App Configuration儲存的值有助於將設置與程式碼分離

這些來源與運行時整合使用依賴注入,而不觸及應用程式二進位文件。

最後的想法

儘管Tim的影片是關於控制台應用程式的,但他教的每一項技術都能無縫擴展至Azure Functions應用——從建立配置文件、讀取密鑰、使用受管理身份,到透過依賴注入載入配置。 無論是使用Visual Studio進行部署,管理您的Azure帳戶,還是尋找完整的程式碼範例,他的見解都能直接應用於現實世界的雲端實踐。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立