1

ASP.NETMVCとIISバージョン7.5を使用しています。

コントローラーで次のアクションを実行します。

public ActionResult Wait(int time = 10000)
{
    var start = DateTime.Now;

    Thread.Sleep(time);

    var end = DateTime.Now;

    var diff = (end - start);

    return Json(new {
        start = start.ToString("yyyy-MM-dd HH:mm:ss.fff"),
        end = end.ToString("yyyy-MM-dd HH:mm:ss.fff"),
        milliseconds = diff.TotalMilliseconds.ToString("#,###"),
    }, JsonRequestBehavior.AllowGet);
}

私が訪問した場合:/ wait?time = 10000

次に:/ wait?time = 10

2番目のリクエストは、最初のリクエストが終了するまで実行されません。

これは通常の動作ですか、それとも各リクエストを独自のスレッドで実行する必要がありますか?

これをコンテキストに当てはめると、このアプリケーションでは、さまざまな呼び出しでさまざまなサーバーからのデータを要求する必要があります。1つの複雑な要求が完了するのを待ってから、いくつかの単純な要求(ローカルデータのみを必要とする)を実行する必要はありません。

編集

同じユーザー(同じセッション)からのリクエストについて話していることに気づきました。ぼんやりしているだけだと思いますが、誰かが助けてくれるかもしれません。

4

1 に答える 1

1

MSDNから

同時リクエストとセッション状態

ASP.NET セッション状態へのアクセスはセッションごとに排他的です。つまり、2 人の異なるユーザーが同時に要求を行った場合、それぞれの個別のセッションへのアクセスが同時に許可されます。ただし、同じセッションに対して (同じ SessionID 値を使用して) 2 つの同時要求が行われた場合、最初の要求はセッション情報への排他的アクセスを取得します。2 番目の要求は、最初の要求が終了した後にのみ実行されます。(最初の要求がロック タイムアウトを超えたために情報の排他ロックが解放された場合、2 番目のセッションもアクセスできます。) @ Page ディレクティブの EnableSessionState 値が ReadOnly に設定されている場合、読み取り専用の要求セッション情報によってセッション データが排他ロックされることはありません。でも、

于 2013-02-19T18:34:45.230 に答える