Azure functions &引用;检测到多线程执行";使用context.CallHttpAsyn时
我有一个OrchestrationTrigger函数,它通过http请求调用另一个服务Azure functions &引用;检测到多线程执行";使用context.CallHttpAsyn时,azure-functions,azure-durable-functions,Azure Functions,Azure Durable Functions,我有一个OrchestrationTrigger函数,它通过http请求调用另一个服务 [FunctionName("MyFunc")] public async Task RunOrchestrator( [OrchestrationTrigger] IDurableOrchestrationContext context, ILogger logger) { var req = new DurableHttpReque
[FunctionName("MyFunc")]
public async Task RunOrchestrator(
[OrchestrationTrigger] IDurableOrchestrationContext context,
ILogger logger)
{
var req = new DurableHttpRequest(HttpMethod.Post, _uri, headers, jsonBody);
var res = await context.CallHttpAsync(req);
// Do something
}
但会出现以下错误:
检测到多线程执行。如果
orchestrator函数代码等待非由创建的任务
DurableOrchestrationContext方法。更多详细信息可在本手册中找到
文章
那里的官方文档建议使用
context.CallHttpAsync
——这正是我所做的。当IDurableCorchestrationContext
方法引发此异常时,意味着您使用的线程不是orchestrator线程调用了该方法。这里的问题不一定与CallHttpAsync
调用有关,而是代码中的其他内容产生了一个新线程。在大多数情况下,这是由前一行代码中的非法await
语句引起的,例如await Task.Delay(1000)
如果您可以用完整的编排描述更新您的帖子,那么我们应该能够更容易地指出问题所在
也可以考虑使用它来主动地检测这些类型的编码错误(本周晚些时候将有一个新版本可以修复一系列已知的问题)。