次のような標準の非非同期アクションがあります。
[HttpPost]
public JsonResult StartGeneratePdf(int id)
{
PdfGenerator.Current.GenerateAsync(id);
return Json(null);
}
この PDF 生成には長い時間がかかる可能性があることを知っているので、非同期操作の結果を気にせずに、タスクを開始して戻るだけです。
デフォルトの ASP.Net MVC 4 アプリでは、次の素晴らしい例外が発生します。
System.InvalidOperationException: 現時点では非同期操作を開始できません。非同期操作は、非同期ハンドラーまたはモジュール内で、またはページ ライフサイクルの特定のイベント中にのみ開始できます。ページの実行中にこの例外が発生した場合は、ページが <%@ Page Async="true" %> とマークされていることを確認してください。
これは、私のシナリオとはまったく関係ありません。調べてみると、この例外を防ぐためにフラグを false に設定できます。
<appSettings>
<!-- Allows throwaway async operations from MVC Controller actions -->
<add key="aspnet:AllowAsyncDuringSyncStages" value="true" />
</appSettings>
https://stackoverflow.com/a/15230973/176877
http://msdn.microsoft.com/en-us/library/hh975440.aspx
しかし問題は、この非同期操作を開始し、同期 MVC コントローラー アクションからそれを忘れることによって何か害があるのでしょうか? 私が見つけることができるすべてのものは、コントローラーを非同期にすることを推奨していますが、それは私が探しているものではありません-常にすぐに戻る必要があるため、意味がありません。