1

使用 VSCode + JavaScript 在本地测试 Azure Durable Functions。能够成功触发HTTP触发的Orchestration Client,甚至可以看到请求头+正文没有问题。但是,我在尝试触发 Orchestrator 时收到以下错误:

无法将“Microsoft.Azure.WebJobs.DurableOrchestrationContext”类型的对象转换为“System.String”类型

我不明白为什么 DurableOrchestrationContext 试图变成一个字符串。调用 Orchestrator 的代码:

context.bindings.patient = [{
    FunctionName: "OrchestratorJS",
    Input: req,
    InstanceId: id
}];

注意: - 我尝试只发送一个字符串作为输入,但没有效果。- 我已经成功地为另一个项目创建了 Durable Functions,这让这更加令人沮丧。

4

1 回答 1

1

由于Functions v2 中语言的处理方式, Functions 运行时尝试将 DurableOrchestrationContext 转换为字符串。与 v1 不同,v2 通过托管在与运行时主机不同的进程中的 Node 语言工作者来运行 JavaScript 函数。语言工作者和主机通过 gRPC 协议进行通信。调用函数时,运行时主机必须通过 gRPC 将绑定的参数信息传递给函数。绑定到复杂对象(如 DurableOrchestrationContext)的参数必须序列化为 JSON 字符串,通过 gRPC 传递,最后再水化以供函数使用。

我们在 1.4.0 版本中引入了 DurableOrchestrationContext 来进行字符串转换。您能否尝试更新到最新版本的扩展(1.5.0)并再次尝试您的功能?

于 2018-07-10T20:28:26.637 回答