0

我有一个使用 C# / MS Bot Framework 构建的机器人,它在 Azure 上运行。它工作正常,但 Azure 中的 HTTP 日志显示大量失败的 HTTP 请求,约占总数的 20%。

当我启用失败的请求跟踪时,这就是我在日志中看到的:

网址:/api/messages

在执行当前 Web 请求期间生成了未处理的异常。可以使用异常堆栈跟踪来识别有关异常起源和位置的信息

[InvalidOperationException:异步模块或处理程序已完成,而异步操作仍处于挂起状态。]

我无法从日志中提取更多详细信息,包括堆栈跟踪(它是空的)。

该机器人也在模拟器中正常工作。通过 Facebook 与机器人交谈时会出现失败的请求,即使用户可以与机器人正常交互,尽管请求看似失败。

我无法弄清楚代码的哪一部分甚至可能导致这个问题,而我的其他机器人似乎没有这个问题。

我怀疑可能是我context.Done(this)用来终止对话,但这似乎是使用它的正常做法。

代码的哪一部分可能导致此问题的任何指针或想法,或如何提取有关错误的更多详细信息,将不胜感激。谢谢。

4

1 回答 1

0

如果不看代码,很难确切地知道发生了什么,但是这种异常在 async/await 世​​界中很常见。通常这意味着您的模块/处理程序完成和异步方法的完成之间存在竞争条件。

我会寻找被调用但未被等待的异步方法。

一些相关读物:

于 2016-11-02T09:59:09.127 回答