0

私のプログラムは長いポストバックを行い、「動作中」というメッセージを画面に表示します。ここで、AJAX を使用して並行してクエリを実行し、そのステータスを更新したいと考えています (たとえば、「20% 完了...」)。

ただし、ポストバック中に Web メソッドへの並列呼び出しが実行されず、遅延が発生することが判明しました。そのため、Javascript はこれらの呼び出しを (それほど定期的ではありません) 行いますが、PostBack 全体が終了する前に応答を受信しません (進行状況を更新する試み全体が使用できなくなります)。

IIS / ASP.NET アプリケーションへの並列クエリを機能させる方法はありますか?

ASP.NET 4.0 と Visual Studio 2010 を開発サーバー コンポーネントと共に使用しています。

前もって感謝します!

4

3 に答える 3

1

この種の操作に SignalR を使用することを検討できます。詳細については、 http://www.signalr.netをご覧ください。

これにより、長いプロセスを開始し、この操作の進行状況をクライアントに送り返すことができます。

Scott Hanselman は、彼のブログで、このようなことを行う方法の実例を提供しています。ここを参照してください http://www.hanselman.com/blog/SolvingTheShakespeareMillionMonkeysProblemInRealtimeWithParallelismAndSignalR.aspx

ただし、彼のブログ投稿では古いバージョンの SignalR を使用していたため、最新バージョンで動作させるには、コードにいくつかの API の変更が必要になることに注意してください。

于 2013-01-25T09:27:05.957 に答える
0

別のオプションは、Postback の代わりに AJAX 呼び出しでプロセスを開始することです。したがって、最初の呼び出しは、サーバー上の別のスレッドでプロセスを開始します。次の呼び出しは、処理スレッドとの共有変数のある種の進行状況のみをチェックします。プロセスが終了したら、必要に応じてページのデータを更新するポストバックを作成できます。

于 2013-01-25T10:29:17.187 に答える
0

私も興味があり、次の説明を見つけました:

ポストバック中に AJAX 呼び出しを行うことはできません。これは、ポストバック中に、AJAX 呼び出しのコールバック関数を含むページがクライアントで破棄されるためです。制御がサーバーに移動して、クライアントの新しいコンテンツを取得すると、クライアントに戻り、そこですべてが再構築されます。これは、AJAX 呼び出しが行われているときだと思います。

于 2013-01-25T09:23:24.637 に答える