February
25th,
2025
Azure Web App 上的環境變數是不能直接使用 ASP.NET Core 原生的 appsettings.json
內容,因為 appsettings.json
可能是有階層結構的,而 Azure Web App 上的環境變數是扁平的,像是一筆一筆的紀錄。這時候想要將 appsettings.json
的內容套用進 Azure Web App 環境變數中時,就需要做一些調整。
在 Azure Web App 的環境變數頁面中,你可以使用進階編輯
來幫助我們快速編輯多項設定:
你會發現,使用進階編輯
的 JSON 內容(右側)和 ASP.NET Core 的 appsettings.json
內容有很大的不同。
除此之外,調整上還需要注意,Azure Web App 所使用的 App Service Plan 是使用哪種作業系統,Windows 或是 Linux,因為這兩種系統所需要做的調整有些微的不同。
在 Windows 下,要將有階層結構的 appsettings.json
轉換成環境變數,除了需要壓平階層外,原本階層的關係要用:
來表示,如下所示:
// 原始的 appsettings.json
{
"AA": {
"BB": "123"
},
"CC": "456"
}
// 轉換後 (Windows 版本)
{
"name": "AA:BB",
"value": "123",
"slotSetting": false
},
{
"name": "CC",
"value": "456",
"slotSetting": false
}
如果是使用 Linux 了話,原本階層的關係要用__
(雙底線)來表示,如下所示:
// 轉換後 (Linux 版本)
{
"name": "AA__BB",
"value": "123",
"slotSetting": false
},
{
"name": "CC",
"value": "456",
"slotSetting": false
}
轉換規則相當簡單,不過如果有個工具幫忙轉換了話還是挺好的。下面的格式轉換功能就是為了方便轉化而設計的,輸入 appsettings.json
的內容,然後選擇作業系統,就可以快速轉換格式。
參考資料: