Azure Functions 執行階段版本概觀
Azure Functions 目前支援兩個版本的執行階段主機。 下表詳細說明目前支援的執行階段版本、其支援層級,以及應何時使用:
版本 | 支援層級 | 描述 |
---|---|---|
4.x | GA | 所有語言函式的建議執行階段版本。查看目前支援的語言版本。 |
1.x | GA (支援將於 2026 年 9 月 14 日結束) | 僅支援必須使用 .NET Framework 的 C# 應用程式。 此版本處於維護模式,只有後續版本才提供增強功能。 對 1.x 版的支援將於 2026 年 9 月 14 日結束。 我們強烈建議您將您的應用程式移轉到 4.x 版,它支援 .NET Framework 4.8、.NET 6、.NET 8 和 .NET 9。 |
重要
自 2022 年 12 月 13 日起,在 Azure Functions 執行階段 2.x 和 3.x 版上執行的函數應用程式已終止延伸支援。 如需詳細資訊,請參閱已淘汰的版本。
本文詳細說明支援版本之間的一些差異、如何建立每個版本,以及如何變更函式執行的版本。
支援等級
支援有兩種等級:
- 正式推出 (GA) - 完整支援且已核准用於生產環境。
- 預覽 - 尚未支援,但預期未來會進入 GA 狀態。
語言
函數應用程式中的所有函式都必須共用相同語言。 建立應用程式時,在函數應用程式中選擇函式的語言。 函數應用程式的語言會維持在 FUNCTIONS_WORKER_RUNTIME 設定中,而且不應該在有現有函式時變更。
下表顯示 Azure Functions 支援的 .NET 版本。 在文章頂端選取您慣用的開發語言。
支援的 .NET 版本取決於 Functions 執行階段版本和您選擇的執行模型:
您的函數程式碼在個別的 .NET 背景工作處理序中執行。 搭配支援的 .NET 和 .NET Framework 版本使用。 若要深入了解,請參閱開發 .NET 隔離式背景工作處理序函數。
支援的版本 | 支援層級 | 預期的社群 EOL 日期 |
---|---|---|
.NET 9 | 預覽 | 請參閱原則 |
.NET 8 | GA | 2026 年 11 月 10 日 |
.NET 6 | GA | 2024 年 11 月 12 日 |
.NET Framework 4.8 | GA | 請參閱原則 |
.NET 7 先前在隔離式背景工作角色模型上受到支援,但於 2024 年 5 月 14 日終止正式支援。
如需詳細資訊,請參閱在隔離式背景工作處理序中執行 C# Azure Functions 的指南。
下表顯示 JAVA 函式支援的語言版本。 在文章頂端選取您慣用的開發語言。
支援的版本 | 支援層級 | 預期的社群 EOL 日期 |
---|---|---|
JAVA 21 (僅限 Linux) | 預覽 | 2028 年 9 月 |
JAVA 17 | GA | 2027 年 9 月 |
Java 11 | GA | 2027 年 9 月 |
Java 8 | GA | 2026 年 11 月 30 日 |
如需詳細資訊,請參閱 Azure Functions JAVA 開發人員指南。
下表顯示 Node.js 函式支援的語言版本。 在文章頂端選取您慣用的開發語言。
支援的版本 | 支援層級 | 預期的社群 EOL 日期 |
---|---|---|
Node.js 22 | 預覽 | 2027 年 4 月 30 日 |
Node.js 20 | GA | 2026 年 4 月 30 日 |
Node.js 18 | GA | 2025 年 4 月 30 日 |
透過轉譯至 JavaScript 支援 TypeScript。 如需詳細資訊,請參閱 Azure Functions Node.js 開發人員指南 (部分機器翻譯)。
下表顯示 PowerShell 函式支援的語言版本。 在文章頂端選取您慣用的開發語言。
支援的版本 | 支援層級 | 預期的社群 EOL 日期 |
---|---|---|
PowerShell 7.4 | GA | 2026 年 11 月 10 日 |
PowerShell 7.2 | GA | 2024 年 11 月 8 日 |
如需詳細資訊,請參閱 Azure Functions PowerShell 開發人員指南 (部分機器翻譯)。
下表顯示 Python 函式支援的語言版本。 在文章頂端選取您慣用的開發語言。
支援的版本 | 支援層級 | 預期的社群 EOL 日期 |
---|---|---|
Python 3.11 | GA | 2027 年 10 月 |
Python 3.10 | GA | 2026 年 10 月 |
Python 3.9 | GA | 2025 年 10 月 |
Python 3.8 | GA | 2024 年 10 月 |
如需詳細資訊,請參閱 Azure Functions Python 開發人員指南 (部分機器翻譯)。
如需語言支援變更規劃的相關資訊,請參閱 Azure 藍圖。
如需舊版 Functions 執行階段語言版本的相關資訊,請參閱已淘汰的執行階段版本。
在特定版本上執行
FUNCTIONS_EXTENSION_VERSION
應用程式設定會控制 Azure 中所發佈應用程式所使用的 Functions 執行階段版本。 在某些情況下,某些語言可能會套用其他設定。
根據預設,經由 Azure CLI 或從 Visual Studio 工具在 Azure 入口網站中建立的函式應用程式會設為 4.x 版。 您可以視需要修改此版本。 您只能在建立函數應用程式之後,但在新增任何函式之前,將執行階段版本降級為 1.x 版。 即使具有現有函式的應用程式,也允許更新為較新的主要版本。
移轉現有的函式應用程式
當您的應用程式具有現有函式時,您必須先採取預防措施,才能移至較新的主要執行階段版本。 下列文章詳細說明主要版本之間的重大變更,包括特定語言的重大變更。 其也會為您提供成功移轉現有函式應用程式的逐步指示。
在 Azure 中變更應用程式版本
使用下列主要執行階段版本值:
值 | 執行階段目標 |
---|---|
~4 |
4.x |
~1 |
1.x |
重要
請勿任意變更此應用程式設定,因為其他應用程式設定會變更,而且可能需要變更您的函式程式碼。 針對現有的函式應用程式,遵循移轉指示。
釘選到特定次要版本
若要解決函數應用程式在最新主要版本上執行時可能發生的問題,您必須將應用程式暫時釘選至特定的次要版本。 釘選可讓您有時間使應用程式在最新的主要版本上正確執行。 釘選到次要版本的方式在 Windows 和 Linux 之間有所不同。 若要深入了解,請參閱如何設定目標 Azure Functions 執行階段版本。
較舊的次要版本會定期從 Functions 中移除。 如需有關 Azure Functions 版本的最新新聞,包括移除特定舊版次要版本,請持續關注 Azure App Service 公告。
延伸模組最低版本
嚴格來說,繫結延伸模組版本與 Azure Functions 執行階段版本之間沒有相互關聯。 但從 4.x 版開始,Azure Functions 執行階段會針對所有觸發程式和繫結延伸模組強制執行最低版本。
如果您收到套件未符合最低必要版本的警告,您應該像平常一樣將該 NuGet 套件更新為最低版本。 您可以在連結的設定文件中找到 Azure Functions v4.x 中使用的延伸模組最低版本需求。
針對 C# 指令碼,更新 host.json 中的延伸模組套件組合參考,如下所示:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
嚴格來說,延伸模組套件組合版本與 Azure Functions 執行階段版本之間沒有相互關聯。 但從 4.x 版開始,Azure Functions 執行階段會針對所有延伸模組套件組合強制執行最低版本。
若您收到延伸模組套件組合版本不符合最低必要版本的相關警告,請更新 host.json 中現有的延伸模組套件組合參考,如下所示:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
若要深入了解延伸模組套件組合,請參閱延伸模組套件組合。
已淘汰的版本
重要
Azure Functions 執行階段 1.x 版的支援將於 2026 年 9 月 14 日結束。 強烈建議您將應用程式移轉至 4.x 版,以取得完整支援。
這些版本的 Functions 執行階段已於 2022 年 12 月 13 日終止延伸支援。
版本 | 目前的支援層級 | 先前的支援層級 |
---|---|---|
3.x | 不支援 | GA |
2.x | 不支援 | GA |
您應該儘快將應用程式移轉至 4.x 版,以取得完整支援。 如需一組完整的語言特定移轉指示,請參閱將應用程式移轉至 Azure Functions 4.x 版。
您仍然可以從 CI/CD DevOps 管線建立及部署使用 2.x 和 3.x 版的應用程式,而且所有現有的應用程式都會繼續執行,而不會發生中斷性變更。 不過,應用程式不符合新功能、安全性修補檔和效能最佳化的資格。 您只能在將應用程式升級至 4.x 版之後,取得相關的服務支援。
2.x 和 3.x 版終止支援是因為對 .NET Core 3.1 的支援已終止,因為其將 .NET Core 3.1 作為核心相依性。 此需求會影響所有 Azure Functions 支援的語言。
在本機開發的應用程式版本
您可以對函數應用程式進行下列更新,以在本機變更目標版本。
Visual Studio 執行階段版本
在 Visual Studio 中,您會在建立專案時選取執行階段版本。 適用於 Visual Studio 的 Azure Functions 工具支援兩個主要執行階段版本。 根據專案設定進行偵錯和發佈時,會使用正確的版本。 版本設定會在 .csproj
檔案中的下列屬性中定義:
<TargetFramework>net8.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
如果您使用隔離式背景工作角色模型,可以選擇 net8.0
、net6.0
或 net48
作為目標框架。 您也可以選擇針對 net9.0
使用預覽支援。 如果您使用的是同處理序模型,則可以選擇 net8.0
或 net6.0
,而且您必須包含至少設定為 4.4.0
的 Microsoft.NET.Sdk.Functions
延伸模組。
.NET 7 先前在隔離式背景工作角色模型上受到支援,但於 2024 年 5 月 14 日終止正式支援。
Visual Studio Code 和 Azure Functions Core Tools
Azure Functions Core Tools 除了用於命令列開發之外,也會供適用於 Visual Studio Code 的 Azure Functions 擴充功能使用。 如需詳細資訊,請參閱安裝 Azure Functions Core Tools。
針對 Visual Studio Code 開發,您可能必須一併更新 azureFunctions.projectRuntime
的使用者設定,以符合所安裝工具的版本。 此設定也會更新函數應用程式建立期間所使用的範本和語言。
繫結
從 2.x 版開始,執行階段使用新的繫結擴充性模型,該模型提供下列優點:
支援第三方繫結延伸模組。
分開處理執行階段和繫結。 此變更可讓繫結延伸模組個別建立版本和發行。 舉例來說,您可以選擇升級至依賴較新版基礎 SDK 的延伸模組版本。
較輕便的執行環境,執行階段只會知道及載入使用中的繫結。
除了 HTTP 和計時器觸發程序之外,所有繫結都必須以明確方式新增至函數應用程式專案,或在入口網站中註冊。 如需詳細資訊,請參閱註冊繫結延伸模組。
下表顯示每個執行階段版本所支援的繫結。
此表顯示主要版本的 Azure Functions 執行階段中所支援的繫結:
類型 | 1.x1 | 2.x 和更新版本2 | 觸發程序 | 輸入 | 輸出 |
---|---|---|---|---|---|
Blob 儲存體 | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure 資料總管 | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Event Grid | ✔ | ✔ | ✔ | ✔ | |
事件中樞 | ✔ | ✔ | ✔ | ✔ | |
HTTP 和 Webhook | ✔ | ✔ | ✔ | ✔ | |
IoT 中樞 | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
行動應用程式 | ✔ | ✔ | ✔ | ||
通知中樞 | ✔ | ✔ | |||
佇列儲存體 | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
服務匯流排 | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
表格儲存體 | ✔ | ✔ | ✔ | ✔ | |
計時器 | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
注意:
- Azure Functions 執行階段 1.x 版的支援將於 2026 年 9 月 14 日結束。 強烈建議您將應用程式移轉至 4.x 版,以取得完整支援。
- 從 2.x 版執行階段開始,必須註冊 HTTP 和計時器以外的所有繫結。 請參閱註冊繫結延伸模組。
- 觸發程序在使用量方案中不受支援。 需要執行階段驅動的觸發程序。
- 僅在 Kubernetes、IoT Edge 和其他自我裝載模式中受到支援。
函數應用程式逾時持續時間
函數應用程式內的函式逾時持續時間是由 host. json 專案檔中的 functionTimeout
屬性所定義。 此屬性特別適用於函式執行。 觸發程序啟動函式執行之後,函式必須在逾時持續時間內傳回/回應。 為了避免逾時,撰寫健全的函式非常重要。 如需詳細資訊,請參閱改善Azure Functions 效能語可靠性。
下表顯示特定方案的預設值和最大值 (以分鐘為單位):
計劃 | 預設 | 最大值 1 |
---|---|---|
取用方案 | 5 | 10 |
Flex 使用量方案 | 30 | 無限制2 |
進階方案 | 304 | 無限制2 |
專用方案 | 304 | 無限制3 |
容器應用程式 | 30 | 無限制4 |
- 不論函數應用程式逾時設定為何,230 秒是 HTTP 觸發函式回應要求所能花費的最大時間量。 這是因為 Azure Load Balancer 的預設閒置逾時。 對於較長的處理時間,請考慮使用 Durable Functions 非同步模式或延遲實際工作並傳回立即回應。
- 沒有強制執行最大執行逾時持續時間。 不過,對於彈性取用和進階方案,在縮減期間提供給函式執行的寬限期為 60 分鐘,而在平台更新期間則會提供 10 分鐘的寬限期。
- 需要將 App Service 方案設定為 Always On。 在平台更新期間會提供 10 分鐘的寬限期。
- Functions 主機執行階段 1.x 版的預設逾時是無限制。
- 當複本數目下限設定為零時,預設逾時會取決於應用程式中使用的特定觸發程式。
下一步
如需詳細資訊,請參閱以下資源: