你当前正在访问 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 和 .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 日 |
TypeScript 通过转换为 JavaScript 来获得支持。 有关详细信息,请参阅 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 运行时版本的语言版本的信息,请参阅停用的运行时版本。
在特定版本上运行
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)"
}
}
若要了解有关扩展捆绑包的详细信息,请参阅扩展捆绑包。
已停用的版本
重要
对 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 的支持终止,而后者是前者的核心依赖项。 此要求影响 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 工具
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 | ✔ | ✔ | ✔ |
注意:
- 对 Azure Functions 运行时版本 1.x 的支持将于 2026 年 9 月 14 日结束。 强烈建议将应用迁移到版本 4.x 以获得完全支持。
- 从版本 2.x 运行时开始,除 HTTP 和 Timer 以外,必须注册所有绑定。 请参阅注册绑定扩展。
- 消耗计划不支持触发器。 需要运行时驱动的触发器。
- 仅 Kubernetes、IoT Edge 和其他自托管模式支持使用触发器。
函数应用超时持续时间
函数应用中函数的超时时间通过 host.json 项目文件中的 functionTimeout
属性进行定义。 此属性专门应用于函数执行。 触发器启动函数执行后,函数需要在超时持续时间内返回/响应。 为了避免超时,编写可靠的函数非常重要。 有关详细信息,请参阅改进 Azure Functions 性能和可靠性。
下表显示特定计划的默认值和最大值(以分钟为单位):
计划 | 默认 | Maximum1 |
---|---|---|
消耗计划 | 5 | 10 |
Flex 消耗计划 | 30 | 无限制2 |
高级计划 | 304 | 无限制2 |
专用计划 | 304 | 无限制3 |
容器应用 | 30 | 无限制4 |
- 不管函数应用超时设置如何,230 秒是 HTTP 触发的函数在响应请求时需要的最长时间。 这起因于 Azure 负载均衡器的默认空闲超时。 对于处理时间较长的情况,考虑使用 Durable Functions 异步模式或延迟实际工作并返回即时响应。
- 不强制实施最大执行超时期限。 不过,对于弹性消耗计划和高级计划,在横向缩减期间,函数执行的宽限期为 60 分钟,在平台更新期间则为 10 分钟。
- 要求将应用服务计划设置为 Always On。 在平台更新期间提供 10 分钟的宽限期。
- 1.x 版 Functions 主机运行时的默认超时为“无限制”。
- 当最小副本数设置为零时,默认超时取决于应用中使用的特定触发器。
后续步骤
有关详细信息,请参阅以下资源: