.NET Core 原生的組態設定是使用 appsettings.json 來讀取組態設定,要先產生出各個環境的組態設定 appsettings.Development.json、appsettings.Staging.json、appsettings.Production.json,再透過環境變數+Build,取代掉原本的值,要佈署的環境越多檔案就越多,每次的改動設定都要很小心,生怕一個不注意就弄壞了,我想要讓組態管理的行為變簡單一些…

.NET Core 原生的組態設定是使用 appsettings.json 來讀取組態設定,要先產生出各個環境的組態設定 appsettings.Development.json、appsettings.Staging.json、appsettings.Production.json,再透過環境變數+Build,取代掉原本的值,要佈署的環境越多檔案就越多,每次的改動設定都要很小心,生怕一個不注意就弄壞了,我想要讓組態管理的行為變簡單一些…
以往我們在 .Net Fx 可以透過 Transforms 來切換不同的組態,而在 .NET Core 開始,則改用 Microsoft.Extensions.Configuration 來處理組態,上篇 也針對 Microsoft.Extensions.Configuration 進行了介紹,這篇將針對 .NET 應用程式注入環境的做法做一個簡單的介紹
使用 .env (環境變數) 配置系統,是我們常用的手段之一,他的格式非常的簡單,就 key = value,攤平的結構
讀取 .env 檔也不是甚麼太大的問題,所以我打算將他整合到 IConfiguration
組態設定除了存放在 IO 檔案之外,存放在作業系統的環境變數則是選項之一,NET 提供 System.Envrionment.GetEnvironmentVariable、System.Environment.SetEnvironmentVariable 讓開發人員輕鬆的存取作業系統的環境變數,但是,開發一個應用程式就要動到作業系統的環境變數,還是挺麻煩的;要讓機密性的資料不上版控,還是會需要付出一些額外的成本,這是跑不掉的。
這一篇則是為了要紀錄了幾種在開發環境(VS IDE、Rider)下可以取得環境變數的方式而且不用動到程式碼。
秘密管理員工具,預設會在專案的開發期間儲存機密資料,絕對不要將密碼或其他敏感性資料儲存在原始程式碼中,機密資料不應與應用程式一起部署。應該透過像是環境變數或 Azure 金鑰保存庫等受控方式來存取生產秘密。 您可以透過 Azure Key Vault 設定提供者 儲存及保護 Azure 測試與生產祕密。
上篇,如何使用組態 Microsoft.Extensions.Configuration,最後我讓物件依賴 IConfiguration,不論是讀檔操作,還是重新載入檔案,它都可以完成,還可以更好嗎?.NET Core 的 Options Pattern 強化 IConfiguration,封裝了讀檔、轉強型別、重新載入、載入通知、驗證資料的行為,提供另一種使用參數的選擇。
Microsoft.Extensions.Configuration.dll 用來處理組態,讀檔、重新載入、支援多種格式,包括記憶體、Json、Xml、Ini,也可以像在 .Net Fx 用 Transform 切換組態。
它是在 .NET Core 的基礎建設之一,除了.NET Core,也支援 NET Framework 4.6.1 以上;也可以像在 .Net Fx 用 Transform 切換組態。
ASP.NET Core 預設的組態是 appSetting.json,本篇簡單介紹組態設定的使用方法,關於 ASP.NET Core 的 Host,以後再寫一篇為大家講解
.NET Core 跟以往 .NET Framework 存取組態設定檔有很大的不一樣,概略的比較如下:
這裡就著重在 .NET Core 的組態設定
[.NET] Web.config / App.config Transformation (switch Debug or Release mode)