javascript - 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,这让这更加令人沮丧。
解决方案
由于Functions v2 中语言的处理方式, Functions 运行时尝试将 DurableOrchestrationContext 转换为字符串。与 v1 不同,v2 通过托管在与运行时主机不同的进程中的 Node 语言工作者来运行 JavaScript 函数。语言工作者和主机通过 gRPC 协议进行通信。调用函数时,运行时主机必须通过 gRPC 将绑定的参数信息传递给函数。绑定到复杂对象(如 DurableOrchestrationContext)的参数必须序列化为 JSON 字符串,通过 gRPC 传递,最后再水化以供函数使用。
我们在 1.4.0 版本中引入了 DurableOrchestrationContext 来进行字符串转换。您能否尝试更新到最新版本的扩展(1.5.0)并再次尝试您的功能?
推荐阅读
- php - WooCommerce Checkout 无休止加载和自定义重定向
- css - 圆圈周围有文字的线条
- mongodb - docker容器启动时无法创建mongodb数据库
- c++ - 为什么要设计一种具有独特匿名类型的语言?
- java - Java 8 Query - 基于具有多个对象列表的键的分组计算
- c++ - VS2017中如何在项目目录下的c++中添加sqlite3.h、sqlite3.dll文件
- reactjs - React Native Expo fetch() 错误网络请求失败
- reactjs - 考虑到可以从键盘触发的 onClick 事件的 TypeScript 类型?
- c++ - 我使用此动态数组的函数定义收到分段错误
- vb.net - 读取 JSON 中的对象数组