6

低速のサードパーティWebサービスを呼び出すいくつかのコントローラーのアクションを持つアプリケーションがあります。これらのアクションは、ページからのAJAX呼び出しを使用して呼び出されます。

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

PHPには、session_write_close()次のように使用できるメソッドがあります。

  1. アクションを遅くするユーザーの要求を受け入れる
  2. セッションデータに基づいて、コントローラー/アクションにアクセスするユーザーの権限を確認します
  3. 必要に応じてセッションに何かを書く
  4. を呼び出しsession_write_close()ます。この時点から、セッションはこのリクエストによって閉じられ、同じユーザーからの他のリクエストはそれにアクセスできます
  5. 私の遅い電話をかける(多分何らかの非同期の方法で)

[SessionState]属性を使用してコントローラーレベルでセッション状態を無効にできることは知っていますが、それは解決策ではありません。

何か案は?

4

1 に答える 1

1

いくつかのシナリオが考えられると思います。

1) コントローラ ファクトリを変更し、それを変更して、セッションなしで、またはいくつかのカスタム セッション実装を使用してコントローラを生成します。

2)セッションレスコントローラーに関するこの記事を読んでみてください

于 2012-09-04T14:41:38.160 に答える