我们有一个Azure函数与计时器触发器,这是使用函数版本3.0和.NET 3.1开发的。此函数运行在Windows应用程序服务计划上的Azure。所以,我已经升级到函数版本4.0和.NET 6.0使用以下步骤:
升级本地项目需要在.csproj XML项目文件中进行以下更改:
1.将属性组.TargetFramework的值更改为net6.0。
1.将属性组.AzureFunctionsVersion的值更改为v4。
1.将现有的ItemGroup.PackageReference列表替换为以下ItemGroup:图像进行这些更改后,更新后的项目应如以下示例所示:图像
1.升级local.settings.json文件映像
1.在本地运行功能应用程序并验证功能。
在Azure中升级你的功能应用
1.运行以下命令以在Azure中的函数应用上将FUNCTIONS_EXTENSION_VERSION应用设置设置为~4。
az函数应用程序配置应用程序设置集--设置函数扩展版本=~4 -g<RESOURCE_GROUP_NAME>-n<APP_NAME>
1.更改函数应用程序的.NET版本。如果函数应用程序托管在Windows上,请运行以下命令。
az功能应用程序配置集--网络框架版本v6.0 -g<RESOURCE_GROUP_NAME>-n<APP_NAME>
但是,我无法从Azure门户测试或查看function.json文件。
2条答案
按热度按时间qyuhtwio1#
我已经在VS 2022 IDE中使用了带计时器触发器的.NET 3.1 Azure函数项目:
已将.NET Core 3.1 Azure Functions项目发布到Azure门户中的Azure Function应用程序,然后按照以下MS文档使用Azure CLI命令将
FUNCTIONS_EXTENSION_VERSION
更改为4:迁移到V4-.NET 6后在本地运行:
然后,将迁移的项目部署到Azure Function App并进行测试,如下所示:
k3bvogb12#
我能够通过从Azure门户运行“诊断并解决问题”找到问题的原因。
此问题与功能名称有关。我的功能名称长度超过32个字符。默认情况下,主机ID是从功能应用程序名称自动生成的,即取前32个字符。如果您有多个功能应用程序共享一个存储帐户,并且它们都使用相同的主机ID(生成的或显式的),可能导致主机ID冲突。例如,如果多个应用程序的名称超过32个字符,则它们的计算ID可能相同。请考虑两个名称为myfunctionappwithareallylongname-eastus-production的功能应用程序以及
我的函数应用程序具有实际的别名-westus-生产
共享同一存储帐户。这些名称的前32个字符相同,因此将为每个名称生成相同的主机IDmyfunctionappwithareallylongname(有关详细信息,请参阅https://github.com/Azure/azure-functions-host/wiki/Host-IDs#host-id-collisions)。
因此,为了解决这个问题,我只需要在Azure上重命名函数名。