文章目錄
ASP.NET Core Configuration 中的 array 沒有正確覆寫
之前筆記 在 ASP.NET Core Configuration 中使用 array 中紀錄到如何在 config 中使用 array,不過在使用後發現有些限制,趁著這個機會紀錄一下
基本環境說明
- macOS Monterey 12.1
- .NET SDK 6.0.100
範例 config
appsettings.json
{ "ConfigArray": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"] }
appsettings.Development.json
{ "ConfigArray": ["Mon","Tue","Wed","Thu","Fri"] }
預期結果與實際落差
預期結果
Mon Tue Wed Thu Fri
實際結果
問題發生原因與調整方式
問題發生原因
Microsoft Docs: Configuration in ASP.NET Core 提到
ConfigurationBinder
在處理 array 時是透過 array 指標處理的,也就是說 array 不是單看 config key 而是config-key:[0.....n]
調整方式
- 不要依賴 base config (
appsettings.json
),每個 envrinment 的 config 都分開寫,避免覆寫 array 時出現意外 - 用 string 來儲存 (e.g.
"Mon,Tue,Wed,Thu,Fri"
,再用,
切分存入 array)
- 不要依賴 base config (
心得
我個人比較傾向使用不依賴 base config 將每個 envrinment config 分開寫,讓 config 比較一目瞭然,不過現在這種類型的 config 多是工具 generate 出來的,需要人眼去看的機會有限,除此之外設定較繁瑣也是其他同事選擇使用 string 的關鍵因素
兩個方法各有擁護者,就依團隊規範來選擇囉
參考資訊
文章作者 Yowko Tsai
上次更新 2022-01-21
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。