将 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_PACKAGE 值 0 时遇到了同样的问题。我们看到相同的调试控制台日志
注意:
-
如果您进行了更改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] 的函数”