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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からSessionStateStoreProviderBase クラスを検索する場合は、下記のリンクをクリックしてください。

- SessionStateStoreProviderBase クラスのページへのリンク