2012-09-04 41 views
6

私は、一部のコントローラのアクションが遅いサードパーティWebサービスを呼び出すアプリケーションを持っています。これらのアクションは、ページからのAJAX呼び出しを使用して呼び出されます。ASP.NET MVC:セッションロックを防ぐ方法は?

非同期コントローラを使用してASP.NETスレッドプールを解放することができます。これは素晴らしい方法です。しかし、セッションはどうですか?私がInProcセッションを使用し、「動作を遅くする」要求を行った場合、特定のユーザは、セッションが最初の「遅い」呼び出しによってロックされているため、アプリケーションに要求を行うことはできません。

はPHPで私は、次のように使用できる方法session_write_close()があります:セッションデータに基づいてコントローラ/アクションにアクセスするには、アクションにユーザーの

  • チェック権利を遅くするためにユーザの要求を受け入れ

    1. 必要に応じてセッションに何かを書く
    2. session_write_close()と呼んでください。この時点セッションから
    3. それにアクセスし、私はセッション状態を無効にすることができますことを知っている(おそらくいくつかの非同期の方法で)

    を私の遅い電話をかけることができ、この要求と同じユーザからの他の要求により閉じられていますコントローラーレベルで[SessionState]属性を使用していますが、それは解決策ではありません。

    アイデア?

  • +0

    を読み取ろうどんなリクエスト? –

    +0

    ここに詳細があります:http://stackoverflow.com/questions/3666556/a-non-locking-in-process-asp-net-session-state-storeそしてここで私の類似したトピックに関する私の質問:http:// stackoverflow.com/questions/2438493/the-whole-site-is-blocked-while-one-page-is-waiting-for-blocking-operation-php – artvolk

    +0

    ここに究極の記述があります:http://stackoverflow.com/質問/ 3629709/i-just-discovered-why-all-asp-net-websites-are-slow-and-i-am-trying-to-work-out – artvolk

    答えて

    0

    私はそれがいくつかのシナリオかもしれないと思います。

    1)コントローラの工場での変更を行い、セッションなしまたは一部、カスタマーセッション実装とcontorllersを生成するためにそれを変更

    2)あなたはそのセッションがによって「ロック」されたと思いますなぜこのarticle about sessionless controllers

    +0

    セッションの変更を変更することは良い考えではないようです私の質問では、コントロールが言及されています。ここでは、「アクションごとの」実装があります:http://sapoval.org/per-action-custom-sessionstateattribute – artvolk

    関連する問題