排查 Azure 运行时升级期间的常见问题

本文介绍如何解决在函数应用语言或运行时版本更新期间可能发生的一些常见问题,例如运行时无法访问且找不到模块。

  • 对 Microsoft .NET Core 3.1 的扩展支持已于 2022 年 12 月 3 日结束。 Azure Functions 运行时 v3 基于 .NET core 3.1。 建议将 函数应用 更新为运行时版本 4.x,该版本使用 .NET 6 并具有长期支持。 2022 年 12 月 3 日之后,你的应用不符合新功能、安全修补程序、性能优化或支持的条件,除非将它们升级到 Functions 运行时版本 4.x。

  • 运行时 v3 上的 Functions 应用将继续运行,并且应用程序不会受到影响。 在此日期之后,可以将代码部署到这些 Functions 应用程序。 但是,我们可能会删除使用常见路径创建面向 Functions 运行时 v3 的应用程序的功能。

  • 有关详细信息和迁移指南,请参阅:

验证函数应用的运行时 v4 兼容性

  • Azure 门户中导航到函数应用。 选择诊断并解决问题,打开Azure Functions 诊断。 在搜索栏中,输入更新 Function App 语言或运行时版本直接运行。 诊断报告包括更新指南。 验证完成后,请按照建议处理应用程序中的任何问题。
  • 我们还提供升级前验证器,帮助你在将功能应用程序迁移到 4.x 时发现潜在问题。 在同一诊断搜索栏中,输入Functions 4.x 预升级验证程序直接运行。 验证完成后,请按照建议处理应用程序中的任何问题。
  • 我们强烈建议将本地项目环境升级到 4.x 版本。 使用 Azure Functions Core Tools 版本 4.x 在本地全面测试应用。
  • 在部署到生产槽之前,考虑在新的运行时版本上使用过渡槽来测试和验证 Azure 中你的应用。 请记住为使用槽进行的迁移设置 WEBSITE_OVERRIDE_STICKY_EXTENSION_VERSIONS=0

更改 Windows 的 Functions 运行时版本

  1. FUNCTIONS_EXTENSION_VERSION设置为“Azure 门户配置”窗格中~4的应用设置。 有关详细信息,请参阅 更改运行时版本
  2. netFrameworkVersion 站点设置设置为面向 .NET 6。 netFrameworkVersion 是 SiteConfig 设置,而不是应用设置。 它不能直接在Azure 门户中使用。 但可以使用 Azure 资源资源管理器Azure CLI/PowerShell 对其进行设置。

设置搜索筛选器,然后选择“显示”,即可获得当前订阅中的功能应用列表。

更改适用于 Linux 的 Functions 运行时版本

  1. FUNCTIONS_EXTENSION_VERSION设置为“Azure 门户配置”窗格中~4的应用设置。 有关详细信息,请参阅 更改运行时版本
  2. 使用命令行接口(CLI)<Language>|<LanguageVersion>根据所用语言将命令行接口设置为LinuxFxVersion。 有关详细信息,请参阅 将 LinuxFxVersion 用于 Linux 函数应用。 例如,若要更新到 .NET 6,可以设置为LinuxFxVersiondotnet|6.0FUNCTIONS_EXTENSION_VERSION设置为 ~4.NET 6。

设置搜索筛选器,然后选择“显示”,即可获得当前订阅中的功能应用列表。

按运行时版本获取支持的语言列表

请参阅运行时版本支持的语言列表。

更新代码后更新函数应用的语言版本设置

  • PowerShell:在Azure 门户中,设置 .PowerShell Core version 有关详细信息,请参阅 更改 PowerShell 版本
  • 你可以从门户网站上的 Azure 功能诊断中获取此信息。 在搜索栏中输入更新功能应用程序语言或运行时版本,即可直接运行。
  • Java:使用 -DjavaVersion 11 或 17 指定语言版本。 或者,你可以使用应用程序服务 REST API 调用GetConfiguration来确定。
  • Node,JavaScript:对于 Windows,请将 WEBSITE_NODE_DEFAULT_VERSION 应用设置设置为 ~16。 对于 Linux,请通过 CLI 将 linuxFxVersion 设置为 node|16。 有关详细信息,请参阅 “设置节点版本”。

Azure Functions 代理使用情况

版本 4.x 中再次提供了对代理的支持,以便你可以成功地将函数应用升级到最新的运行时版本。 但是,建议尽快切换到将函数应用与 Azure API 管理集成。 API 管理使你能够利用一组更完整的功能来定义、保护、管理和盈利基于 Functions 的 API。 有关详细信息,请参阅如何迁移到 APIM使用 Visual Studio 将 Functions 与 APIM 集成

获取使用运行时版本 1.x、2.x 或 3.x 的所有 Azure Functions 应用的列表

  1. Azure 门户中导航到函数应用。
  2. 选择诊断并解决问题,打开Azure Functions 诊断
  3. 搜索栏中,输入更新 Function App 语言或运行时版本直接运行。
  4. 在诊断报告中,向下滚动并选择“列出所有函数应用>视图详细信息”。
  5. 设置搜索筛选器,然后选择“显示以获取当前订阅中的函数应用列表。

或者,可以使用 App 服务 REST API 调用(GetConfiguration)来确定这一点。 LinuxFxVersion 并提供 WindowsFxVersion 版本信息。

将 .NET Framework 4.6.1 应用从 Functions 运行时 v1 移动到 v4

.NET Framework 4.6.1 已达生命周期结束期限,应用应升级到 .NET Framework 4.8。 在 Functions v4 中,可以在进程外模式下运行 .NET Framework 4.8 应用。 有关详细信息,请参阅隔离过程指南

迁移的函数应用未启动或存在一些运行时问题

  • 对于 .NET 应用,请记得在生成和部署之前将代码更新到 .NET 6。
  • 在Azure 门户仔细检查应用的运行时版本。
  • 对于 Windows 应用,还必须通过 CLI 或 PowerShell 设置 netFrameworkVersion
  • 请确保按建议使用 2.x 或更高版本 扩展捆绑包。 Functions 运行时的版本 4.x 需要版本 2.x 或 3.0.0。
  • 4\.x 中不再支持使用 AzureWebJobsDashboard 登录到 Azure 存储。 请改用 Application Insights 进行监视。
  • 如果收到 Azure Functions 运行时无法访问且共享存储帐户的消息,请参阅 主机 ID 注意事项
  • Azure Functions 4.x 不支持 Node.js 10 和 12、Python 3.6 和 PowerShell 6。 有关详细信息,请参阅 v4 运行时支持的语言版本。
  • 对于 Python 函数,如果发现与模块冲突和模块相关的错误,请尝试在应用设置中设置为 PYTHON_ISOLATE_WORKER_DEPENDENCIES 1
  • 查看 迁移现有函数应用
  • 对于运行时问题,请在Azure 门户“诊断和解决问题”选项中搜索函数应用或报告错误,并查看错误消息和解决方案的诊断报告。 另请查看“函数配置检查”检测器,以确保配置正确。
  • 有关其他故障排除提示,请查看将 Azure 函数应用升级到 V4 时的博客问题。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区