私は次のようなコントローラーを持っています:
public MyController : Controller
{
public ActionResult DoSomething()
{
CallSomeMethodWhichDoesAsyncOperations();
return Json(new { success = successful }, JsonRequestBehavior.AllowGet);
}
}
コントローラを呼び出すと、次のエラーが発生します。
現在、非同期操作を開始することはできません。非同期操作は、非同期ハンドラーまたはモジュール内で、またはページライフサイクルの特定のイベント中にのみ開始できます。ページの実行中にこの例外が発生した場合は、ページにマークが付いていることを確認してください
<%@ 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);
}
}
これにより、例外が次の「非同期操作がまだ保留中に完了した非同期モジュールまたはハンドラー」に変更されました。