Как я понял, вы запускаете этот код в действии контроллера:
//and this is the piece of code that run all tasks.
foreach (var item in BotList)
{
BotHandler BotObject = new BotHandler(item,conn);
Task.Run(() => { BotObject.Run();});
}
Основная проблема заключается в том, что вы пытаетесь запустить задачу для уже завершенного запроса.Вот почему ExceptionHandlingMiddleware (и фактически другие промежуточные программы) ничего не может обработать.Чтобы исправить вашу проблему, вы можете добавить блок try / catch для обработки неожиданного исключения.
Я бы настоятельно рекомендовал не запускать фоновую задачу во время HTTP-запроса.Это подверженный ошибкам подход, поскольку задача может быть закрыта в любое время, и вы даже не заметите.Вместо этого подхода лучше использовать фоновую задачу ( msdn , SO Обсуждение ), какую-то функцию AWS lambda / Azure или другой планировщик задач.
InЕсли после вызова HTTP-метода вам необходимо выполнить какое-либо задание по пересчету, вы можете рассмотреть асинхронную обработку сообщений, чтобы запустить процесс.