你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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。

重要

截至 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 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 20 GA 2026 年 4 月 30 日
Node.js 18 GA 2025 年 4 月 30 日
Node.js 16 GA 2023 年 9 月 11 日*
Node.js 14 GA 2023 年 4 月 30 日*

*对 Functions 的支持已延长至 2024 年 6 月 30 日。

TypeScript 通过转换为 JavaScript 来获得支持。 有关详细信息,请参阅 Azure Functions Node.js 开发人员指南

下表显示了 PowerShell 函数支持的语言版本。 在文章顶部选择首选开发语言。

支持的版本 支持级别 预期的社区生命周期结束 (EOL) 日期
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 运行时版本的语言版本的信息,请参阅停用的运行时版本

在特定版本上运行

Azure 中的已发布应用使用的 Functions 运行时版本由 FUNCTIONS_EXTENSION_VERSION 应用程序设置指定。 在某些情况下,对于某些语言,其他设置可能适用。

默认情况下,在 Azure 门户中、通过 Azure CLI 或从 Visual Studio 工具创建的函数应用设置为版本 4.x。 可以根据需要修改此版本。 只能在创建函数应用之后、添加任何函数之前将运行时版本降级为 1.x。 即使应用包含现有函数,也允许更新到更高的主要版本。

迁移现有函数应用

如果应用包含现有函数,则必须先采取预防措施,然后再迁移到更高的主要运行时版本。 以下文章详细介绍了主要版本之间的中断性变更,包括特定于语言的中断性变更。 它们还提供成功迁移现有函数应用的分步说明。

在 Azure 中更改应用版本

使用以下主要运行时版本值:

Value 运行时目标
~4 4.x
~1 1.x

重要

请不要随意更改此应用设置(因为这可能需要更改其他应用设置以及函数代码)。 对于现有函数应用,请按照迁移说明进行操作

固定到特定的次要版本

若要解决函数应用在最新的主版本上运行时可能遇到的问题,必须暂时将应用固定到特定的次要版本。 通过固定,你将有时间在最新的主版本上正确运行应用。 对于 Windows 和 Linux,固定到次要版本的方式有所不同。 若要了解详细信息,请参阅如何针对 Azure Functions 运行时版本

系统会定期从 Functions 中删除旧的次要版本。 有关 Azure Functions 版本的最新消息,包括删除较旧的特定次要版本,请关注 Azure 应用服务公告

最低扩展版本

从技术上讲,绑定扩展版本与 Functions 运行时版本之间没有关联。 但是,从版本 4.x 开始,Functions 运行时对所有触发器和绑定扩展强制实施了最低版本要求。

如果收到有关包不符合最低版本要求的警告,则应像平常一样将该 NuGet 包更新到最低版本。 可以在链接的配置文件中找到对 Functions v4.x 中使用的扩展的最低版本要求。

对于 C# 脚本,请更新 host.json 中的扩展捆绑包引用,如下所示:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

从技术上讲,扩展捆绑包版本与 Functions 运行时版本之间没有关联。 但是,从版本 4.x 开始,Functions 运行时对扩展捆绑包强制实施了最低版本要求。

如果收到有关扩展捆绑包版本不符合最低版本要求的警告,请更新 host.json 中的现有扩展捆绑包引用,如下所示:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

若要了解有关扩展捆绑包的详细信息,请参阅扩展捆绑包

已停用的版本

这些版本的 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 的支持终止,而后者是前者的核心依赖项。 此要求影响 Azure Functions 支持的所有语言

本地开发的应用程序版本

你可以对函数应用进行以下更新以在本地更改目标版本。

Visual Studio 运行时版本

在 Visual Studio 中,可在创建项目时选择运行时版本。 适用于 Visual Studio 的 Azure Functions 工具支持这两个主要运行时版本。 基于项目设置进行调试和发布时,将使用正确的版本。 版本设置在 .csproj 文件中的以下属性内定义:

<TargetFramework>net8.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>

如果使用独立工作器模型,则可以选择 net8.0net6.0net48 作为目标框架。 如果使用进程内模型,则可选择 net8.0net6.0,并且必须包含至少设置为 4.4.0Microsoft.NET.Sdk.Functions 扩展。

.NET 7 以前在独立工作器模型上受支持,但已于 2024 年 5 月 14 日结束正式支持。

Visual Studio Code 和 Azure Functions Core 工具

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
事件网格
事件中心
HTTP 和 Webhook
IoT 中心
Kafka3
移动应用
通知中心
队列存储
Redis
RabbitMQ3
SendGrid
服务总线
SignalR
表存储
计时器
Twilio

1 对 Azure Functions 运行时 1.x 版的支持将于 2026 年 9 月 14 日结束。 强烈建议将应用迁移到版本 4.x,以获得全面支持。

2 从 2.x 版运行时开始,除了 HTTP 和 Timer 以外,所有绑定都必须注册。 请参阅注册绑定扩展

3 消耗计划中不支持触发器。 需要运行时驱动的触发器

4 仅在 Kubernetes、IoT Edge 和其他自托管模式中受支持。

函数应用超时持续时间

函数应用中函数的超时时间通过 host.json 项目文件中的 functionTimeout 属性进行定义。 此属性专门应用于函数执行。 触发器启动函数执行后,函数需要在超时持续时间内返回/响应。 有关详细信息,请参阅改进 Azure Functions 性能和可靠性

下表显示特定计划的默认值和最大值(以分钟为单位):

计划 默认 Maximum1
消耗计划 5 10
Flex 消耗计划 30 不受限制3
高级计划 302 不受限制3
专用计划 302 不受限制3
容器应用 305 不受限制3
  1. 不管函数应用超时设置如何,230 秒是 HTTP 触发的函数在响应请求时需要的最长时间。 这起因于 Azure 负载均衡器的默认空闲超时。 对于处理时间较长的情况,考虑使用 Durable Functions 异步模式延迟实际工作并返回即时响应
  2. Functions 运行时 1.x 版本的默认超时不受限制
  3. 保证最长 60 分钟。 OS 和运行时修补、漏洞修补和横向缩减行为仍可取消函数执行,因此请确保编写的函数可靠
  4. 在 Flex 消耗计划中,主机不会强制实施执行时间限制。 但是,目前没有保证,因为平台可能需要在横向缩减、部署或应用更新期间终止实例。
  5. 最小副本数设置为零时,默认超时取决于应用中使用的特定触发器。

后续步骤

有关详细信息,请参阅以下资源: