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

为何Azure Data Factory调用Durable Function返回NotFound及StorageException报错

问题根因定位

你遇到的是三类叠加问题,按优先级排查:

1. 存储权限异常(核心错误)

App Insight中捕获的Microsoft.WindowsAzure.Storage.StorageException: Forbidden是首要根因:Durable Function运行强依赖Azure Storage账户存储编排状态、执行历史等数据,部署到Azure后函数无权限访问关联的存储账户,导致Http Start触发器执行失败,最终返回404给ADF。
常见触发场景:

  • 函数应用配置的AzureWebJobsStorage连接字符串失效,比如存储账户密钥轮换后未更新、使用的SAS令牌已过期
  • 存储账户开启了访问防火墙,未放行函数应用的出站IP,也未开启允许可信Azure服务访问的配置
  • 存储账户的表/队列/Blob服务关闭了公共访问,且未给函数应用分配对应权限的托管身份

2. ADF调用路径配置错误

你在function.json中配置的Http Start路由为orchestrators/{functionName},对应完整调用路径为https://<你的函数域名>/api/orchestrators/MyOrchestrator,但ADF调用Azure Function的配置规则和你当前的操作不一致:

  • 函数名字段只需填Http触发器的名称,也就是MyHttpStart,不能填编排器名称MyOrchestrator,也不能填带前缀的orchestrators/MyOrchestrator
  • 编排器名称MyOrchestrator需要作为路径参数传递给Http Start触发器,你需要在ADF的Function活动配置中新增路径参数functionName,值设为MyOrchestrator

3. 扩展包版本兼容性问题

你的host.json中配置的extensionBundle版本为[1.*, 2.0.0),这个版本内置的Durable Task组件版本较低,和当前Azure Functions运行时存在已知兼容性问题,建议升级到3.x版本:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[3.*, 4.0.0)"
  }
}
修复步骤
  • 优先排查存储权限:确认函数应用AzureWebJobsStorage连接字符串有效性,若存储账户开了防火墙则放行函数IP,或给函数应用分配存储账户的存储Blob数据参与者、存储队列数据参与者、存储表数据参与者角色
  • 修改ADF Function活动配置:函数名填MyHttpStart,添加路径参数functionName = MyOrchestrator
  • 升级extensionBundle版本后重新部署函数应用
  • 验证:先用Postman直接调用https://<你的函数域名>/api/orchestrators/MyOrchestrator确认返回正常,再回ADF调试即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:03