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

本地调试C# HTTP触发Azure Durable Functions时活动函数自动触发问题

解决Azure Durable Functions本地调试首次启动自动触发活动函数的问题

核心原因

本地调试用Azurite作为存储时,首次启动会自动处理之前调试中断残留的未完成编排/活动实例——这些实例状态被持久化在Azurite的本地存储中,第二次启动时残留实例已处理完毕,因此不会再自动触发。

解决方法

1. 启动时自动清理Durable Functions存储

修改项目根目录的local.settings.json,在AzureWebJobsStorage连接字符串中添加自动清理配置,让每次调试启动时清除存储内的残留实例:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true;DurableTask:HubName=YourFunctionHub;DurableTask:StorageProvider:CleanStorageOnStart=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}

注:将YourFunctionHub替换为你实际的Durable Hub名称,未自定义过则默认是DurableFunctionsHub

2. 手动清理Azurite本地存储

若不想自动清理,可手动删除Azurite的存储文件夹:

  • 新版Azurite默认路径:%USERPROFILE%\AppData\Local\Temp\Azurite
  • 旧版Azure Storage Emulator路径:%USERPROFILE%\AppData\Local\AzureStorageEmulator
    每次调试前删除该文件夹下所有内容,再启动项目即可。

3. 调试前主动终止未完成实例

在停止调试前,通过Durable Functions CLI工具终止所有运行中的实例:

func durable terminate --all --hub-name YourFunctionHub

代码层面检查点

确认你的编排器逻辑:

  • 不会在无有效输入的情况下执行不必要的活动调用
  • 调试中断时,实例状态能被正确标记为完成/失败,避免残留到下一次启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:25:19