首页 > 解决方案 > InvalidCastException:Azure 持久功能错误

问题描述

使用 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,这让这更加令人沮丧。

标签: javascriptvisual-studio-codeazure-durable-functions

解决方案


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

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


推荐阅读