を要求...ASP.NET MVC + jQueryの+ IIS6:複数のAjaxが、私は、問題がどこにあるかわからない
私はリストにページ上のパッケージの追跡情報をチェックするAJAX要求を持っています
ページに10個のパッケージ(10個のクラス 'fedex_status')がある場合、10個のリクエストが作成されます。要求は正常に動作しますが、結果は一度に1つずつ(シリアル形式で)返されます。コントローラのアクション内でリクエストの開始と停止にタイムスタンプを追加しました。
public ActionResult Fedex(string trackingNumber)
{
DateTime requestStart = DateTime.Now;
TrackingService tracking = new TrackingService();
string status = tracking.FedexTrackingNumberStatus(trackingNumber);
return Content(status + " - " + requestStart.ToString("hh:mm:ss.FFF") + " - " + DateTime.Now.ToString("hh:mm:ss.FFF"));
}
タイムスタンプのどれも重複していません。したがって、コントローラは要求を1つずつ処理しています。これはおかしなことです。
ここで、ajaxリクエストは '必須'です。それは間違いなく即座に(非同期に)戻ります。 IISのログを見ると、要求にはコントローラアクションが返すものと同じタイムスタンプがあります。
私の質問は、jqueryがすべてのajaxリクエストを並列に送信しないこと、またはIISまたはASP.NETのみがリクエストをシリアルに処理していることです。私はIISとASP.NETの技術的な詳細を大事にしているので、おそらくその設定が永久に間違っていて、一度に1つの要求にしか応答しません(内部使用、低トラフィック)。つまり、私はjqueryのばかだと、リクエストが実際に実行されたときにテストする方法がわからない(私が知っているのは$ .ajaxコールがすぐに返るということだ)。
ありがとうございます!
これは残念です。私は実際には他の場所(ユーザーが「作成した貨物」のようなメッセージ)で一時的なデータを使用していますので、それを取り除くことはできません。この特定のコントローラーはTempDataやSessionを必要としません。私はコントローラのレベルでTempDataを無効にすることが役立つかどうか、またはコントローラがそれを使用するかどうかにかかわらずweb.configのトランプでセッションが無効になっていないかどうか疑問に思う。 – anonymous
私はそれが状況のサブセット(aspcompt = trueが頭に浮かぶ)にのみ当てはまると考えました。私は、セッションだけでは、すべてのリクエストがシリアライズされるとは思わない。 –
@Erv:この回答から、私が読んできたことは、標準のASP.NETでは、ページごとにセッションで必要なロックの種類を指定できるということです。デフォルトでは、私はそのライターのロックと考えているだけ1ページあたり1要求を許可します。複数のリーダーを許可するリーダーロックに変更できますが、ライターをブロックし、ロックを保持しているライターをブロックします。これをASP.NET MVCに適用する方法を知りません。私は何も特別なもののためにセッション状態を使用するので、「どこでもリーダーロックを使用する」と言いたいです。 – anonymous