使用VSCode + JavaScript在本地测试Azure持久功能。能够成功触发HTTP触发的Orchestration Client,甚至可以看到请求标头+正文没有问题。但是,尝试触发Orchestrator时收到以下错误:
无法将类型为“ Microsoft.Azure.WebJobs.DurableOrchestrationContext”的对象转换为类型为“ System.String”的
我不明白为什么DurableOrchestrationContext试图变成字符串。 调用Orchestrator的代码:
context.bindings.patient = [{
FunctionName: "OrchestratorJS",
Input: req,
InstanceId: id
}];
注意: -我尝试仅发送一个字符串作为输入,但没有任何效果。 -我已经成功地为另一个项目创建了“持久功能”,这使它更加令人沮丧。
答案 0 :(得分:1)
由于how languages are handled in Functions v2,Functions运行时正尝试将DurableOrchestrationContext强制转换为字符串。与v1不同,v2通过与运行时主机不同的进程托管的Node语言工作程序运行JavaScript函数。语言工作者和主机通过gRPC协议进行通信。调用函数时,运行时主机必须通过gRPC将绑定的参数信息传递给函数。绑定到复杂对象(例如DurableOrchestrationContext)的参数必须序列化为JSON字符串,通过gRPC传递,最后重新水化以使用它们的函数。
在1.4.0版本中,我们将DurableOrchestrationContext引入了字符串转换。您能尝试更新到最新版本的扩展程序(1.5.0),然后重试功能吗?