我有一个类似于以下内容的控制器:
public MyController : Controller
{
public ActionResult DoSomething()
{
CallSomeMethodWhichDoesAsyncOperations();
return Json(new { success = successful }, JsonRequestBehavior.AllowGet);
}
}
调用我的控制器时,出现以下错误:
此时无法启动异步操作。异步操作只能在异步处理程序或模块内或在页面生命周期中的某些事件期间启动。如果在执行 Page 时发生此异常,请确保将 Page 标记为
<%@ Page Async="true" %>
。
现在我无法控制CallSomeMethodWhichDoesAsyncOperations
并且方法本身不是异步的,但在内部会执行一些异步触发并忘记。我能做些什么来修复它?已尝试将控制器更改为AsyncController
和/或使控制器中的方法异步。
编辑:
当我尝试使用我第一次尝试的 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);
}
}
这确实将异常更改为以下“异步模块或处理程序已完成,而异步操作仍处于挂起状态”。