觀點 · 資訊分享

Azure Functions 的 .NET 8、.NET 9 支援 11 月 10 日結束:還在用 in-process 模式的要先搬家

Microsoft 宣布 Azure Functions 對 .NET 8 與 .NET 9 的支援在 2026 年 11 月 10 日結束,請升級到 .NET 10。還在用 in-process 模式的函式,要先遷移到 isolated worker 模式;Linux Consumption 方案還得先換成 Flex Consumption。

發布
2026-09-23
篇幅
約 4 分鐘 · 1,963 字
結構
7 節 + 3 題常見問題
標籤
#Azure#Azure Functions#.NET 10#升級遷移
Azure Functions 的 .NET 8、.NET 9 支援 11 月 10 日結束:還在用 in-process 模式的要先搬家

一句話看懂:Azure Functions 對 .NET 8 和 .NET 9 的支援在 11 月 10 日結束,函式要升到 .NET 10;還在用 in-process 模式的,得先換成 isolated worker 模式。

Azure Functions 停止支援 .NET 8/9資訊圖卡:11/10 之後函式還能跑,但不再有安全更新,要升到 .NET 10

先用白話講:「支援結束」是什麼意思?

想像你住的大樓管委會公告:「舊款電梯 11 月 10 日起不再保養。」電梯當天不會突然停,你照樣可以搭,但之後零件壞了、出現安全問題,都不會有人來修。

Azure Functions 是 Microsoft 的無伺服器服務:你只寫一段段的函式,Azure 負責在需要時幫你執行。這次公告的意思是:用 .NET 8、.NET 9 寫的函式,11 月 10 日之後還能跑,但不再有安全更新。

發生什麼事

Microsoft 在 9 月 23 日的 Azure Updates 發布退休公告:

  • Azure Functions 對 .NET 8 與 .NET 9 的支援在 2026 年 11 月 10 日結束,請改用 .NET 10
  • Function App 會繼續運作,但不再提供安全更新
  • 在不支援的執行階段上執行,可能有安全與效能問題

從公告日算到 11 月 10 日,大約只剩 7 週(自行換算)。

依你的情況,要做哪些事?

你的狀況 要做什麼
使用 in-process 模式 先遷移到 isolated worker 模式,再升級到 .NET 10
已經是 isolated worker 模式 直接升級到 .NET 10
跑在 Linux Consumption 方案 先升級到 Flex Consumption 方案,再升級到 .NET 10

Microsoft Learn 的遷移文件也寫明:in-process 模式本身的支援,同樣在 2026 年 11 月 10 日結束。也就是說,in-process 的函式這次是「模式和版本」兩件事一起到期。

給開發者的技術細節

先判斷目前的模式:看應用程式設定 FUNCTIONS_WORKER_RUNTIME,值是 dotnet-isolated 就是 isolated worker 模式;如果不是,就要檢查是不是 in-process(遷移時官方要求把它改成 dotnet-isolated)。

in-process 遷移到 isolated 的主要工作(依 Microsoft Learn):

  • 專案檔:把 Microsoft.NET.Sdk.Functions 換成 Microsoft.Azure.Functions.Worker 系列套件,觸發器與繫結也要換成對應的 Worker.Extensions.* 套件
  • 啟動:加上 Program.cs 設定主機
  • 函式程式碼:屬性與型別要改,例如 HTTP 觸發改用 HttpRequestData、HttpResponseData(或改用 ASP.NET Core 整合)
  • 設定值:
{
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}
  • 部署:可以先在部署位置(staging slot)改設定測試,但官方提醒不要把 FUNCTIONS_WORKER_RUNTIME 設成位置專屬設定;CI/CD 自動化也要一起更新目標版本
  • 如果相依的函式庫只能在 .NET Framework 上執行,官方建議的目標是 .NET Framework 4.8

我的看法

很多中小企業的排程、Webhook、LINE 推播轉發,都是幾年前用 in-process 模式寫的 Azure Functions,跑得好好的就沒人去動。這次等於一次要處理兩件事:模式遷移加版本升級,工作量比單純改版本號大很多。

我會建議現在就盤點:每個 Function App 是什麼模式、什麼方案、用了哪些繫結。in-process 的先排時程遷移,用部署位置測過再切換。離 11 月 10 日只剩 7 週左右,真的不要拖到最後一週。

名詞小辭典

  • Azure Functions:Microsoft 的無伺服器運算服務,只需撰寫函式,由 Azure 負責執行與擴展。
  • in-process 模式:函式與 Functions 主機在同一個行程裡執行的舊架構。
  • isolated worker 模式:函式在獨立的工作行程裡執行,可以自由選擇 .NET 版本,是目前的主流做法。
  • Flex Consumption:Azure Functions 較新的依用量計費方案。

資料來源

常見問題

11 月 10 日之後,我的函式會停掉嗎?
不會立刻停。官方說 Function App 會繼續運作,但不再提供安全更新,Azure Functions 對 .NET 8、9 的支援也結束。繼續跑在不支援的版本上,有安全與效能風險。
怎麼知道自己是 in-process 還是 isolated?
看應用程式設定 FUNCTIONS_WORKER_RUNTIME:值是 dotnet-isolated 就是 isolated worker 模式。如果不是,而且專案檔引用的是 Microsoft.NET.Sdk.Functions,就是要遷移的 in-process 專案。
遷移到 isolated 模式要改很多嗎?
要調整專案檔的套件引用(改用 Microsoft.Azure.Functions.Worker 系列)、加上 Program.cs 的啟動設定、修改函式的屬性與型別,並把 FUNCTIONS_WORKER_RUNTIME 改成 dotnet-isolated。Microsoft Learn 有完整的遷移步驟,建議先用部署位置(slot)測試。
LINE