2

この jQuery プラグインを使用 してファイルをアップロードしました。

単一/複数のファイルで正常に動作しています。

しかし、サイズが 90 ~ 100 MB のような大きなファイルをアップロードしようとすると、他のすべての ajax 呼び出しがブロックされます。

ウィンドウを最小化して他のページにアクセスしようとすると、このような大きなファイルをアップロードしているときに、アップロードが完了するまですべての ajax 呼び出しがキューに入れられます。

ファイルのアップロードに問題はありません。最大 2 GB のファイルをアップロードできます。しかし、アップロードが完了するまで、サイトの他の機能にアクセスできません。

この問題を解決するにはどうすればよいですか?

このアップロード プロセスを強制的に非同期で動作させ、サイトの他のすべてのページ/機能にアクセスできるようにしたいと考えています。

この目的で使用できる他のオプション/プラグインはありますか (フラッシュなし)?

4

1 に答える 1

3

コントローラー内で ASP.NET セッションを使用している場合、これは正常で予期される動作です。これは設計によるものです。ASP.NET セッションはスレッド セーフではなく、同じセッションから並列要求をトリガーしようとすると、ASP.NET は単にブロックして 2 つの要求を順番に実行します。

この動作を望まない場合は、アップロード先のアクションを含むコントローラーのセッションを無効にする必要があります。SessionStateこれは、次の属性で装飾することで実行できます。

[SessionState(SessionStateBehavior.Disabled)]
public class SomeController: Controller
{
    // You cannot use Session in this controller

    [HttpPost]
    public ActionResult Upload(MyViewModel model)
    {
        ...
    }
}
于 2013-03-01T07:24:33.823 に答える