WebFormsプロジェクトからMVCにカスタムWebハンドラを移行しようとしました。そこでは正常に動作し、非同期ProcessRequestと呼ばれました。MVCで非同期Webハンドラが動作しない
public class MyHandler : IHttpHandler
{
...
public async void ProcessRequest(HttpContext context)
{
...
私は私のMVCプロジェクト(/Content/MyHandler.ashx)でそれを実行した場合しかし、私はエラーを以下の取得:
非同期操作は、この時点で開始することはできません。非同期操作は、非同期ハンドラまたはモジュール内、またはページライフサイクルの特定のイベント中にのみ開始できます。ページの実行中にこの例外が発生した場合は、Pageが<%@ Page Async = "true"%>とマークされていることを確認してください。この例外は、ASP.NET要求処理では一般的にサポートされていない「非同期void」メソッドの呼び出しを示す可能性があります。代わりに、非同期メソッドはTaskを返す必要があり、呼び出し元はそれを待つ必要があります。
私はのprocessRequestが同期作ってみました(私はメソッド定義では「非同期」を削除し、Method().Result
にawait Method()
から、すべての非同期呼び出しを変更しましたが、それは助けていない、サーバーだけで永遠にページをロードします。 私も交換してみましたIHttpAsyncHandler
とIHttpHandler
が、それはうまくいきませんでした 私もルートに、カスタムフォルダにハンドラファイルを移動しようとした、結果は同じである 助けてください
コントローラを使用していると考えたことはありますか? –
いいえ、私にはもっと単純なように思えたので、私はすでに持っているソリューションを使いたいと思っていました。(これは比較的大きなハンドラです) – Dalibor