低速のサードパーティWebサービスを呼び出すいくつかのコントローラーのアクションを持つアプリケーションがあります。これらのアクションは、ページからのAJAX呼び出しを使用して呼び出されます。
非同期コントローラーを使用してASP.NETスレッドプールを解放できます。これはすばらしいことです。しかし、セッションはどうですか?InProcセッションを使用し、「スローアクション」に対して行われた要求の場合、特定のユーザーは、最初の「スロー」呼び出しによってセッションがロックされているため、アプリケーションに対して要求を行うことができません。
PHPには、session_write_close()
次のように使用できるメソッドがあります。
- アクションを遅くするユーザーの要求を受け入れる
- セッションデータに基づいて、コントローラー/アクションにアクセスするユーザーの権限を確認します
- 必要に応じてセッションに何かを書く
- を呼び出し
session_write_close()
ます。この時点から、セッションはこのリクエストによって閉じられ、同じユーザーからの他のリクエストはそれにアクセスできます - 私の遅い電話をかける(多分何らかの非同期の方法で)
[SessionState]
属性を使用してコントローラーレベルでセッション状態を無効にできることは知っていますが、それは解決策ではありません。
何か案は?