Azure静态Web应用查询Durable Function执行状态返回400错误
问题分析与解决方案
核心问题
你遇到的400错误源于**Azure静态Web App与Function App关联时自动启用的App Service Authentication(Easy Auth)**拦截了Durable Function的状态查询端点请求,即便配置了CORS,认证拦截仍会导致请求失败。本地环境正常是因为未启用Easy Auth,请求不受限制。
具体解决方案
1. 排除Durable Task Webhook路径的认证拦截
在Function App配置中让Easy Auth跳过Durable Task的状态查询路径:
- 进入Azure Portal,打开你的Function App
- 左侧菜单选择「Authentication」
- 在「Authentication settings」区域找到「Excluded paths」
- 添加路径:
/runtime/webhooks/durabletask/* - 保存配置
这个操作会让Easy Auth不拦截所有Durable Task相关的webhook请求,前端轮询就能正常访问状态查询端点。
2. 确认CORS配置的完整性
确保Function App的CORS配置正确覆盖你的静态Web App:
- 进入Function App的「CORS」设置
- 添加静态Web App的完整Origin:
https://mywebapp.azurestaticapps.net - 确保「Allowed methods」包含
GET(轮询使用GET请求) - 无需勾选「Allow credentials」(你的代码未涉及凭证携带场景)
3. 验证状态查询URL的有效性
检查前端获取的pollingUrl是否包含正确的code参数(Function Key):
- 前端打印
pollingUrl,确认URL中的code参数存在且有效 - 你的Durable Function客户端代码中
CreateCheckStatusResponse的调用逻辑正常,无需调整
额外排查点
- 打开浏览器开发者工具,查看400请求的Response Body,里面会包含具体错误信息(比如「Invalid authentication token」),可进一步确认问题根源
- 确保Durable Function扩展版本为最新,避免版本兼容性问题
内容的提问来源于stack exchange,提问作者FFranz
相关产品推荐
相关产品推荐

