У меня есть контроллер с чем-то вроде следующего:
public MyController : Controller
{
public ActionResult DoSomething()
{
CallSomeMethodWhichDoesAsyncOperations();
return Json(new { success = successful }, JsonRequestBehavior.AllowGet);
}
}
При вызове моего контроллера я получаю следующую ошибку:
Асинхронная операция не может быть запущена в это время. Асинхронные операции может запускаться только в асинхронном обработчике или модуле или во время определенных события в жизненном цикле страницы. Если это исключение возникло при выполнении страницы, убедитесь, что страница отмечена
<%@ Page Async="true" %>
.
Теперь у меня нет контроля над CallSomeMethodWhichDoesAsyncOperations
, и сам метод не является асинхронным, но внутренне выполняет некоторый асинхронный огонь и забывает. Что я могу сделать, чтобы исправить это? Попробовали сменить контроллер на AsyncController
и/или сделать метод в контроллере async.
Edit:
Когда я попытался использовать AsyncController, я сначала попробовал, с тем же результатом
public MyController : AsyncController
{
public ActionResult DoSomething()
{
CallSomeMethodWhichDoesAsyncOperations();
return Json(new { success = successful }, JsonRequestBehavior.AllowGet);
}
}
И затем
public MyController : AsyncController
{
public async Task<ActionResult> DoSomething()
{
CallSomeMethodWhichDoesAsyncOperations();
return Json(new { success = successful }, JsonRequestBehavior.AllowGet);
}
}
Что изменило исключение на следующее: "Асинхронный модуль или обработчик завершен, пока асинхронная операция еще не выполнена".