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

Azure Durable Function加载IDurableOrchestrationClient失败求助

问题根因

这个类型加载异常本质是Durable Task扩展的程序集版本绑定冲突:

  • 你项目中引用的是Microsoft.Azure.WebJobs.Extensions.DurableTask 2.7.1版本,IDurableOrchestrationClient接口和[DurableClient]绑定特性都是2.x版本新增的内容;但Azure Functions 3.0运行时默认加载的是1.x版本的Durable Task扩展程序集,1.x版本中既没有这个接口,也没有对应绑定特性,运行时在1.0.0.0版本的程序集里找2.x才存在的类型,就会抛出这个加载错误。
  • 额外的冲突诱因:你手动单独安装的Microsoft.Azure.DurableTask.AzureStorage、Microsoft.Azure.DurableTask.Core两个包属于Durable扩展的底层依赖,不需要手动在项目中引用,手动指定版本很容易造成依赖链版本不一致,放大程序集加载冲突的概率。
修复步骤
  • 清理冗余包引用
    打开项目的csproj文件,删除手动添加的Microsoft.Azure.DurableTask.AzureStorage和Microsoft.Azure.DurableTask.Core两个包引用,这两个包会作为Durable WebJobs扩展的依赖自动还原,手动指定版本反而会导致依赖版本错乱。
  • 安装兼容版本的Durable扩展
    对于.NET Core 3.1 + Azure Functions 3.0运行时的组合,Microsoft.Azure.WebJobs.Extensions.DurableTask 2.6.1是兼容性验证最充分的版本,不会出现程序集绑定冲突。可以直接在NuGet包管理器中指定版本安装,也可以直接修改csproj中的包引用配置:
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.6.1" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13" />
    
  • 清理部署残留
    如果是发布到Azure云环境后出现的报错,发布时勾选"删除目标位置的现有文件"选项,避免旧版本的dll残留在站点目录下,导致运行时加载错误版本的程序集。
  • 代码验证
    你当前的函数代码本身没有语法问题,修复包版本后放开注释的业务逻辑即可正常运行,可参考的完整实现如下:
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            [DurableClient] IDurableOrchestrationClient client,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            
            string productId = req.Query["productId"];
            log.LogInformation("Got product Id {productId}", productId);
    
            string orchestrationId = await client.StartNewAsync("SyncOrchestrator", productId);
            return client.CreateCheckStatusResponse(req, orchestrationId);
        }
    }
    
排查补充
  • 本地调试时要使用v3大版本的Azure Functions Core Tools,不要用v2或v4版本的Core Tools运行3.0版本的函数项目,否则也会出现内置扩展版本不匹配的问题。
  • 不要在.NET Core 3.1 + Functions 3.0的技术栈组合中使用2.7.0及以上版本的Durable Task扩展,高版本扩展已经适配更高版本的函数运行时,和3.0运行时存在天然兼容性问题,强行使用会出现各类不可预期的加载、运行错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:48:15