6

ASP.NETフレームワーク(C#を使用)を使用しており、すべてのユーザーのセッション変数を作成しています。初期化されたすべてのセッションを繰り返すことは可能ですか?この反復では、いくつかのセッションの特定のプロパティも変更したいと思います。

セッション変数に格納されているデータを変更しようとしています。セッションを変更したい特定のユーザーのセッションIDがあるので、IDを比較できるようにする必要もあります。

4

1 に答える 1

0

これを処理するためのフレームワーク クラスがあるかどうかはわかりませんが、要求ごとに IIS サーバーで作成されたセッションをループする必要がある場合は、コードからアクセスできる独自のコレクション オブジェクトに各セッションを格納してみませんか? ? たとえば、global.asax ファイルでは、Session_Start イベントに独自のコードを追加して、特定のセッションをリストに保存できます。セッションが新しいセッションであるかどうかを確認する必要があります。これは、Session.IsNewSession プロパティを介して実行できます。新しいセッションが作成されるたびに、Global.asax の Session_Start イベントが発生します。

ただし、セッションがタイムアウトまたは終了したときにリストからセッションを削除しないと問題が発生する可能性があるため、これを行う方法は次のとおりです。

  • Session_Start イベントで、 this.Session.IsNewSession ブール値を確認します

  • Session.IsNewSession が true の場合、現在のセッションを取得し (Global.asax のコンテキストに現在の新しいセッションがあるため、this.Session を使用)、キーを Session.SessionId として Dictionary オブジェクトに保存します。

  • これにより、サーバーで作成されたセッションごとに一意のキー ペア コレクションが作成されます。

  • Session_End イベントで、終了した現在のセッション (this.Session) の Session.SessionID プロパティを取得します。

  • 終了したセッション値の Session.SessionID を使用して、セッションを含むディクショナリ内のキーと値のペアを削除します。

このインフラストラクチャが配置され、ディクショナリ オブジェクトがアプリケーション コードからアクセスできる場所に配置されると、このディクショナリを取得して繰り返し処理し、その時点でサーバーでセッションをアクティブにすることができます。

于 2012-11-08T14:00:41.420 に答える