You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Durable Functions隔离模式下能否注入DurableTaskClient?

Durable Functions隔离模式下DurableTaskClient依赖注入问题解决

核心结论

在Durable Functions隔离模式下完全可以通过依赖注入注入DurableTaskClient,你遇到的运行时异常并非配置问题,而是NuGet包版本不兼容导致的。

异常原因分析

抛出的System.MissingMethodException提示找不到Microsoft.DurableTask.Protobuf.ExecutionStartedEvent.get_CorrelationData()方法,这是典型的版本冲突问题:

  • Microsoft.Azure.Functions.Worker.Extensions.DurableTask与Microsoft.DurableTask.Client/Microsoft.DurableTask.Worker等包版本不一致
  • 不同版本的Protobuf定义不兼容,导致运行时无法找到对应方法

解决方案

1. 统一Durable相关NuGet包版本

确保所有Durable Functions相关包使用同一版本,避免自动解析带来的版本差异。例如在项目文件中明确指定:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.1" />
  <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.1.1" />
  <PackageReference Include="Microsoft.DurableTask.Client" Version="1.1.1" />
  <PackageReference Include="Microsoft.DurableTask.Worker" Version="1.1.1" />
  <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.1.0" />
</ItemGroup>

2. 修正DurableTaskClient配置

在隔离模式下,配置DurableTaskClient时可指定Task Hub(需与Orchestrator使用的Hub名称一致),同时确保传输方式匹配:

var host = new HostBuilder()
    .ConfigureFunctionsWebApplication()
    .ConfigureServices(services =>
    {
        services.AddApplicationInsightsTelemetryWorkerService();
        services.ConfigureFunctionsApplicationInsights();
        services.AddTransient<DurableTaskService>();
        
        services.AddDurableTaskClient(builder =>
        {
            builder.UseGrpc()
                   .ConfigureTaskHub(options =>
                   {
                       options.HubName = "TestHubName"; // 对齐你的Orchestrator配置
                   });
        });
    })
    .Build();

host.Run();

3. 清理NuGet缓存并重新还原

执行命令清理缓存,避免残留旧版本包引发冲突:

dotnet nuget locals all --clear
dotnet restore

验证要点

  • 确认Orchestrator函数的Task Hub名称与配置中的一致
  • 检查local.settings.json中存储连接字符串配置正确:
{
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

内容的提问来源于stack exchange,提问作者Vladimir Gaytanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:45:02