2

以前は経験したことのない奇妙な問題に遭遇したので、誰かが何かアドバイスがあるかどうかを確認するためにここに問い合わせると思いました。

現在、私のアプリケーションには新しい「録音」(新しいウィンドウ内のFlashモジュールを使用してオーディオを録音する)を作成する領域があり、録音が終了すると、ユーザーがフォームを送信し、すべてのオーディオデータが私のコントローラ。

このプロセスの期間はオーディオのサイズに応じて変化する可能性があるため、アップロードが終了してから閉じるまでウィンドウは開いたままになります。

この問題は、アップロードプロセス中に発生します。ユーザーが記録をアップロードし、アップロード中に新しいウィンドウ([記録の作成]ビューが表示されます)を開こうとすると、新しいウィンドウのコンテンツの読み込みがアップロードまで停止します。完了です。

実際にアップロードする前にレコーディングの作成用に複数のウィンドウを開くと、プロセス全体が正常に機能しますが、アップロードを開始してから新しいウィンドウを開こうとすると、アップロード操作が完了するまで「待機」します。新しいウィンドウの内容を入力します。

4

1 に答える 1

4

セッションで問題が発生していると思います。

アクティブなセッション中に提供され、それを変更できるもの (つまり、images/css/etc を除く .Net リクエスト) は、リクエストが完了するまでセッション オブジェクトの排他ロックを取得します。セッションにアクセスできる他のリクエストは、ロックが解放されるまでキューに入れられます。

詳細はこちら

特定のリクエストがセッション状態への読み取り専用アクセスのみを必要とすることを示すことで、回避することができます。詳細については、リンクされた Q の回答を参照してください。

ここにはカスタムのセッション状態モジュールの実装があり、かなりスピードアップする可能性があります。これは、メモリ内のハッシュ テーブルにセッション情報をキャッシュし、セッション アクセスが完了したことをフレームワークに伝えることによって機能します。

このアプローチには潜在的な問題があることに注意してください。2 つのページがほぼ同時にセッションを変更すると、どちらの変更が保持されるかを確認する競合状態が発生する可能性があるため、影響を完全に理解している場合にのみ実行してください。

于 2012-10-10T17:03:35.310 に答える