Ошибка 500 в Bot Framework, InvalidOperationException: асинхронный модуль или обработчик завершены во время ожидания асинхронной операции

У меня есть бот, созданный с помощью C#/MS Bot Framework, который работает в Azure. Работает нормально, но журналы HTTP в Azure показывают большое количество неудачных HTTP-запросов, около 20% от общего числа.

Когда я включил отслеживание неудачных запросов, вот что я увидел в журналах:

URL-адрес: /api/сообщения

Во время выполнения текущего веб-запроса возникло необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью трассировки стека исключений.

[InvalidOperationException: асинхронный модуль или обработчик завершены, пока асинхронная операция еще не завершена.]

Я не смог извлечь больше деталей из журналов, включая трассировку стека (она пуста).

Бот также нормально работает в эмуляторе. Неудачные запросы появляются при общении с ботом через Facebook, хотя пользователь может нормально взаимодействовать с ботом, несмотря на кажущиеся неудачными запросы.

Я не могу понять, какая часть кода может вызвать это, и другие мои боты, похоже, не имеют этой проблемы.

Я подозреваю, что это может быть связано с тем, что я использую context.Done(this) для завершения диалога, но это кажется нормальной практикой для использования этого.

Любые указатели или идеи, какая часть кода может вызвать это, или как извлечь более подробную информацию об ошибке, будут оценены. Спасибо.


person Community    schedule 02.11.2016    source источник


Ответы (1)


Не видя кода, немного сложно точно понять, что происходит, однако это исключение довольно распространено в мире async/await. Обычно это означает наличие состояния гонки между завершением вашего модуля/обработчика и завершением асинхронного метода.

Я бы искал асинхронные методы, вызываемые, но не ожидаемые.

Некоторые связанные чтения:

person Ezequiel Jadib    schedule 02.11.2016