SessionStateStoreProviderBase クラス
アセンブリ: System.Web (system.web.dll 内)


ASP.NET のセッション状態は、セッション状態ストア プロバイダを使用してデータ ストアのセッション データの読み取り/書き込みを行います。セッション状態ストア プロバイダは SessionStateStoreProviderBase 抽象クラスを継承するクラスで、データ ストア固有の実装によってメンバをオーバーライドします。セッション状態ストア プロバイダは、ASP.NET ページの処理中に、データ ストアと通信してセッション変数およびタイムアウト値などの関連するセッション情報を保存または取得するために、SessionStateModule クラスによって呼び出されます。
各 ASP.NET アプリケーションのセッション データは、それぞれの SessionID プロパティに対して個別に保存されます。ASP.NET アプリケーションは、セッション データを共有しません。
このトピックの例にあるように、sessionState 構成要素の mode 属性を Custom に設定し、customProvider 属性をカスタム プロバイダの名前に設定すると、ASP.NET アプリケーションにカスタムの SessionStateStoreProviderBase を実装できます。
セッション ストア データのロックASP.NET アプリケーションは、同時実行の要求に対する応答をサポートするためにマルチスレッド化されるため、同時に複数の要求が同じセッション情報にアクセスする可能性があります。フレームセットの複数のフレームがすべて同じアプリケーションにアクセスする場合を考慮してみます。フレームセットの各フレームに対応する個々の要求は、Web サーバー上の異なるスレッドで同時に実行できます。各フレーム ソースの ASP.NET ページがセッション状態変数にアクセスすると、セッション ストアに同時に複数のスレッドがアクセスすることになります。
セッション ストアにおけるデータの衝突およびセッション状態の予期しない動作を回避するには、SessionStateModule クラスおよび SessionStateStoreProviderBase クラスに、ASP.NET ページの実行期間中に特定のセッションに対してセッション ストアの項目を排他的にロックする機能を含めます。EnableSessionState 属性が ReadOnly になっている場合も、同じアプリケーションの他の ASP.NET ページはセッション ストアに書き込むことができるので、ストアのセッション データに対する読み取り専用の要求は、ロックされているデータが解放されるまで待機することになる可能性があります。
ロックは、要求の開始時に GetItemExclusive メソッドを呼び出す際にセッション ストア データに設定されます。要求が完了すると、ロックは SetAndReleaseItemExclusive メソッドの呼び出し時に解除されます。
SessionStateModule オブジェクトが GetItemExclusive メソッドまたは GetItem メソッドの呼び出し中にロックされたセッション データに遭遇すると、ロックが解除されるか、またはセッション データがロックされている時間が ExecutionTimeout プロパティの値を超えるまで、0.5 秒間隔でセッション データへの要求を繰り返します。実行時間がタイムアウト値を超えると、SessionStateModule オブジェクトは ReleaseItemExclusive メソッドを呼び出してセッション ストア データを解放し、その時点でセッション ストア データを要求します。
ロックされているセッション ストア データは、SetAndReleaseItemExclusive メソッドを現在の応答に対して呼び出す前に別のスレッドで ReleaseItemExclusive メソッドを呼び出して解放されていることがあるので、別のセッションによって既に解放されている変更済みのセッション状態ストア データの設定と解除を試みることもあります。このような状況を回避するために、GetItem メソッドおよび GetItemExclusive メソッドはロック識別子を返します。このロック識別子は、ロックされているセッション ストア データを変更するために各要求に含める必要があります。セッション ストア データは、データ ストアのロック識別子が SessionStateModule が提供するロック識別子と一致する場合のみ変更できます。
特定のセッションに対して Abandon メソッドを呼び出すと、そのセッションのデータは RemoveItem メソッドを使用してデータ ストアから削除されます。削除しなければ、データがセッション データ ストアに残るので、セッションに対するその後の要求に使用されます。有効期限切れのセッション データを削除するかどうかは、SessionStateStoreProviderBase の実装によって決まります。

セッション状態ストア プロバイダの実装の例については、「セッション状態ストア プロバイダの実装」を参照してください。
カスタム セッション状態ストア プロバイダを使用するように構成されている ASP.NET アプリケーションの Web.config ファイルのコード例を次に示します。
<configuration> <connectionStrings> <add name="OdbcSessionServices" connectionString="DSN=SessionState;" /> </connectionStrings> <system.web> <sessionState mode="Custom" customProvider="OdbcSessionProvider"> <providers> <add name="OdbcSessionProvider" type="Samples.AspNet.Session.OdbcSessionStateStore" connectionStringName="OdbcSessionServices" /> </providers> </sessionState> </system.web> </configuration>


System.Configuration.Provider.ProviderBase
System.Web.SessionState.SessionStateStoreProviderBase


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


SessionStateStoreProviderBase コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


SessionStateStoreProviderBase 抽象クラスを継承するクラスでは、コンストラクタを実装する必要はありません。SessionStateStoreProviderBase 実装の初期化値は、Initialize メソッド実装に渡されます。


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


SessionStateStoreProviderBase プロパティ

名前 | 説明 | |
---|---|---|
![]() | Description | 管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。 ( ProviderBase から継承されます。) |
![]() | Name | 構成時にプロバイダを参照するために使用される表示名を取得します。 ( ProviderBase から継承されます。) |

SessionStateStoreProviderBase メソッド

名前 | 説明 | |
---|---|---|
![]() | CreateNewStoreData | 現在の要求で使用する SessionStateStoreData オブジェクトを新規作成します。 |
![]() | CreateUninitializedItem | 新しいセッション状態項目をデータ ストアに追加します。 |
![]() | Dispose | SessionStateStoreProviderBase の実装によって使用されているすべてのリソースを解放します。 |
![]() | EndRequest | 要求の最後に SessionStateModule オブジェクトによって呼び出されます。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetItem | セッション データ ストアから読み取り専用のセッション状態データを返します。 |
![]() | GetItemExclusive | セッション データ ストアから読み取り専用のセッション状態データを返します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | Initialize | プロバイダを初期化します。 ( ProviderBase から継承されます。) |
![]() | InitializeRequest | 要求ごとの初期化のために、SessionStateModule オブジェクトによって呼び出されます。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ReleaseItemExclusive | セッション データ ストアの項目のロックを解除します。 |
![]() | RemoveItem | セッション データ ストアから項目データを削除します。 |
![]() | ResetItemTimeout | セッション データ ストアの項目の有効期限の日時を更新します。 |
![]() | SetAndReleaseItemExclusive | 現在の要求の値を使用してセッション状態データ ストアのセッション項目の情報を更新し、データのロックを解除します。 |
![]() | SetItemExpireCallback | Global.asax ファイルに定義されている Session_OnEnd イベントの SessionStateItemExpireCallback デリゲートへの参照を設定します。 |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

SessionStateStoreProviderBase メンバ
データ ストアのセッション状態プロバイダに必要なメンバを定義します。
SessionStateStoreProviderBase データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Description | 管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。(ProviderBase から継承されます。) |
![]() | Name | 構成時にプロバイダを参照するために使用される表示名を取得します。(ProviderBase から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | CreateNewStoreData | 現在の要求で使用する SessionStateStoreData オブジェクトを新規作成します。 |
![]() | CreateUninitializedItem | 新しいセッション状態項目をデータ ストアに追加します。 |
![]() | Dispose | SessionStateStoreProviderBase の実装によって使用されているすべてのリソースを解放します。 |
![]() | EndRequest | 要求の最後に SessionStateModule オブジェクトによって呼び出されます。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetItem | セッション データ ストアから読み取り専用のセッション状態データを返します。 |
![]() | GetItemExclusive | セッション データ ストアから読み取り専用のセッション状態データを返します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | Initialize | プロバイダを初期化します。 (ProviderBase から継承されます。) |
![]() | InitializeRequest | 要求ごとの初期化のために、SessionStateModule オブジェクトによって呼び出されます。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ReleaseItemExclusive | セッション データ ストアの項目のロックを解除します。 |
![]() | RemoveItem | セッション データ ストアから項目データを削除します。 |
![]() | ResetItemTimeout | セッション データ ストアの項目の有効期限の日時を更新します。 |
![]() | SetAndReleaseItemExclusive | 現在の要求の値を使用してセッション状態データ ストアのセッション項目の情報を更新し、データのロックを解除します。 |
![]() | SetItemExpireCallback | Global.asax ファイルに定義されている Session_OnEnd イベントの SessionStateItemExpireCallback デリゲートへの参照を設定します。 |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- SessionStateStoreProviderBaseのページへのリンク