【问题标题】:Error indexing method 'QueueTrigger' Could not load type 'Azure.Core.SyncAsyncEventHandler错误索引方法 \'QueueTrigger\' 无法加载类型 \'Azure.Core.SyncAsyncEventHandler
【发布时间】:2023-01-12 14:43:55
【问题描述】:

我有一个 azure 函数队列触发器。它在本地工作正常,但在部署时却不行。在 Application Insights 中,我可以看到以下错误消息,队列触发器不会因为这个异常而被调用。我有一个带有 azure functions v3 的 .netcore 3.1 应用程序。甚至我将它升级到 .net6.0 & azure functions v4。另外,我尝试了升级、降级和安装一些软件包,但仍然没有解决问题。

如何修复 System.TypeLoadException - 索引方法“NameOfQueueTrigger”时出错。无法从程序集“Azure.Core”加载类型 Azure.Core.SyncAsyncEventHandler?

【问题讨论】:

  • 你能读一下the problems with images of text然后edit添加转录将您的文本图像转换为实际文本?也许有用:/help/formatting
  • 图像看起来不错,但同时在 Stack Overflow 论坛中以文本的形式发布错误消息,否则面临类似问题的人将很难找到类似的问题和答案。

标签: .net azure azure-functions appinsights queuetrigger


【解决方案1】:

Microsoft 删除了 Azure Portal Function App Deployment 上的 .NET 3.1 支持:

使用队列触发器在本地环境(VS 代码)中创建了 .NET 3.1 Azure Function App - 在本地测试:

将V3 Project部署到V4 Azure Portal Function App时,出现如下警告,点击“deploy anyway”选项后部署成功:

在 Azure 门户中测试:


我已将队列触发器函数项目从 .NET 3.1 迁移到 6,并将 Azure Functions 核心工具版本 3 迁移到 4,并进行了以下更改:

.csproj 文件代码:

<Project  Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- <TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion> -->
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference  Include="Microsoft.Azure.WebJobs.Extensions.Storage"  Version="4.0.5"  />
<!-- <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.1.1" /> -->
<PackageReference  Include="Microsoft.NET.Sdk.Functions"  Version="4.1.1"  />
</ItemGroup>
<ItemGroup>
<None  Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None  Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>

它要求在更改.csproj 文件中的版本后恢复丢失的依赖项,然后单击恢复他们:

结果:

错误索引方法“NameOfQueueTrigger”。无法从程序集“Azure.Core”加载类型 Azure.Core.SyncAsyncEventHandler

对于此错误,请检查以下步骤:

  1. 检查local.settings.json 中定义的连接字符串和功能代码中的连接字符串是否相同,并指向正确的存储帐户和正确的队列名称:

    1. 请参阅@MayankBargali-MSFT 就类似问题给出的 MS Q&A 503163。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2021-09-20
    相关资源
    最近更新 更多