将 dotnet 隔离的进程 Azure Function 从 .net 5 迁移到 .net 6

Posted

技术标签:

【中文标题】将 dotnet 隔离的进程 Azure Function 从 .net 5 迁移到 .net 6【英文标题】:Migrating dotnet-isolated process Azure Function from .net 5 to .net 6 【发布时间】:2022-01-22 05:18:05 【问题描述】:

我正在尝试将现有的 .net 5 dotnet-isolated 函数迁移到 .net 6。它已部署到 Azure。我更新了所有 NuGet 包并将FUNCTIONS_EXTENSION_VERSION 设置为~4。如前所述,它在 dotnet-isolated FUNCTIONS_WORKER_RUNTIME 设置中的 .net 5 上运行良好,现在仍然存在。

它在 Visual Studio 2022 中运行良好,但在部署到 Azure 时,没有加载和执行任何函数。 Functions 应用程序已启动并正在运行。使用 Kudu 调试控制台,我得到:

2021-12-20T15:25:11.703 [Information] Loading functions metadata
2021-12-20T15:25:11.704 [Information] 0 functions loaded
2021-12-20T15:25:11.705 [Information] Loading functions metadata
2021-12-20T15:25:11.705 [Information] 0 functions loaded
2021-12-20T15:25:26.229 [Information] Host Status: 
  "id": "testname",
  "state": "Running",
  "version": "4.0.1.16815",
  "versionDetails": "4.0.1+d22b332c30efafeed1e4898c9b92280697138194",
  "platformVersion": "96.0.7.599",
  "instanceId": "25d4009bce1d0f8d31e51726fdcef27cc4654e363649d28127051edda8891d94",
  "computerName": "10-30-6-202",
  "processUptime": 51200

Azure 是否已经支持带有 dotnet-isolated 和 .net 6 的函数?我还可以检查什么来找出为什么没有找到并执行函数?

【问题讨论】:

【参考方案1】:

首先,我们创建了 .Net 5 Isolated v3 Azure Functions,并通过 Visual Studio 将它们部署在 Azure 中。

部署到 Azure 后,我们在门户中看到如下配置:

并运行函数:

在这一步之后,将 .Net Core 版本从 5 更改为 6 并将 .csproj 文件中的函数版本 v3 更改为 v4 并重建解决方案。

已成功构建并在本地执行。

将版本更改为 6 后,通过 Visual Studio 发布到相同的功能应用,因为它要求自动更新 azure 功能版本并选择是并发布。

这里在 Azure Function App Configuration 中,它自动将函数版本更改为4

更新答案

在 azure 中发布了 2 个函数:

在 azure 中发布了 0 个函数:

确保您添加了函数并发布到 azure 以查看 已发布的函数正在“函数”选项卡中运行/可用。

将函数应用发布到 azure 后,您可能会更改/删除 WEBSITE_RUN_FROM_PACKAGE值。如果您在应用程序配置中更改或删除了功能选项卡中的功能,则会在门户中删除。

我们在应用程序配置中更改 WEBSITE_RUN_FROM_PACKAGE0 时遇到了同样的问题。我们看到相同的调试控制台日志

注意:

    如果您进行了更改WEBSITE_RUN_FROM_PACKAGE,请在发布到 azure 之前进行更改。 要么 使用visual to azure发布不带zip deploy的函数应用。 如果您进行了任何更改WEBSITE_RUN_FROM_PACKAGE,请确保您的函数类文件在函数选项卡中可用

【讨论】:

感谢您的回复。我的函数应用程序也已启动并运行,但未找到并执行任何函数。配置中的其余部分与您这边相同(FUNCTIONS_EXTENSIONS_VERSION 为 ~4,FUNCTIONS_WORKER_RUNTIME 也是 dotnet-isolated)。 @JanezLukan,请查看更新后的答案。 再次感谢您帮助 DelliganeshS-MT。我们的 Azure DevOps 构建代理中似乎存在问题,它设法构建和部署,但由于某种奇怪的原因,出现了错误并且无法正常工作,即使功能已成功部署并启动并运行。从 Visual Studio 部署成功并按预期工作。 如果回答对您有帮助,请Accept it as an Answer,以便遇到相同问题的其他人可以找到此解决方案并解决他们的问题。

以上是关于将 dotnet 隔离的进程 Azure Function 从 .net 5 迁移到 .net 6的主要内容,如果未能解决你的问题,请参考以下文章

具有 dotnet 隔离的 Az 功能的提琴手 - 启动 gRPC 调用时出错

如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?

升级到 DotNet Core 2.2 后 Azure 应用服务不运行

通过 azure-sdk-dotnet 查询 Azure 应用密码的过期日期

从 .NET 3 迁移到 .NET 5 时,Azure 函数中出现错误“未找到语言 [dotnet-isolated] 的函数”

使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例)