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

如何向Durable Functions的CreateCheckStatusResponse响应附加自定义数据

实现方案

完全可以在不修改instanceId、不拉长URL的前提下向返回结果追加自定义字段,核心思路是直接修改CreateCheckStatusResponse返回的响应内容,无需改动Durable Functions的内置逻辑。

推荐实现方式

你调用CreateCheckStatusResponse拿到默认响应对象后,手动向响应体或者响应头追加自定义业务字段即可,两种实现可选:

方式1:追加到响应体(和默认状态字段平级)

修改返回的JSON结构,将业务ID和内置的id、statusQueryGetUri等字段平级返回,客户端可以直接从响应体读取。
以下是进程内(In-Process)模型的代码示例:

string instanceId = await starter.StartNewAsync("SendCorrespondence", request);
var correspondenceId = Guid.NewGuid().ToString();

// 获取默认的状态响应
var checkStatusResponse = starter.CreateCheckStatusResponse(req, instanceId);

// 读取原有响应内容,追加自定义字段
var originalContent = await checkStatusResponse.Content.ReadAsStringAsync();
var responseJson = JObject.Parse(originalContent);
responseJson["correspondenceId"] = correspondenceId;

// 替换为修改后的响应内容
checkStatusResponse.Content = new StringContent(responseJson.ToString(), Encoding.UTF8, "application/json");

return checkStatusResponse;

如果使用隔离工作者(Isolated Worker)模型,修改逻辑类似,操作HttpResponseData的Body属性即可。

方式2:追加到响应头(更轻量)

如果不想修改默认的响应体结构,可以直接把业务ID放到自定义响应头里,客户端直接读头取值即可,实现更简单:

string instanceId = await starter.StartNewAsync("SendCorrespondence", request);
var correspondenceId = Guid.NewGuid().ToString();

var checkStatusResponse = starter.CreateCheckStatusResponse(req, instanceId);
// 追加自定义响应头
checkStatusResponse.Headers.Add("X-Correspondence-Id", correspondenceId);

return checkStatusResponse;

说明

两种方案都不会改动Durable Functions内置的instanceId规则,也不会导致返回的URL变长,完全满足不需要轮询即可直接拿到业务ID的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:21:01