Bot框架错误500,InvalidOperationException:异步模块或处理程序在异步操作挂起时完成

本文关键字:程序 处理 异步操作 挂起 模块 错误 框架 InvalidOperationException 异步 Bot | 更新日期: 2023-09-27 18:15:49

我有一个用c#/MS bot框架构建的bot在Azure上运行。它正常工作,但是Azure中的HTTP日志显示了大量失败的HTTP请求,大约占总数的20%。

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

URL:/api/消息

的过程中产生了一个未处理的异常当前的web请求。关于来源和地点的信息可以使用异常堆栈跟踪 来识别异常。

[InvalidOperationException:异步模块或处理程序

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

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

我不知道代码的哪一部分甚至可能导致这个和我的其他机器人似乎没有这个问题。

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

任何提示或想法的代码的哪一部分可能导致这个,或如何提取更多的错误细节,将是感激的。谢谢。

Bot框架错误500,InvalidOperationException:异步模块或处理程序在异步操作挂起时完成

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

我会查找被调用但没有被等待的异步方法。

相关阅读:

  • ASP。. NET控制器:当异步操作仍然挂起时,异步模块或处理程序已完成
  • Web Api + HttpClient:异步模块或处理程序在异步操作尚未完成时完成