SessionStateStoreProviderBase クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データ ストアのセッション状態プロバイダーに必要なメンバーを定義します。
public ref class SessionStateStoreProviderBase abstract : System::Configuration::Provider::ProviderBase
public abstract class SessionStateStoreProviderBase : System.Configuration.Provider.ProviderBase
type SessionStateStoreProviderBase = class
inherit ProviderBase
Public MustInherit Class SessionStateStoreProviderBase
Inherits ProviderBase
- 継承
例
セッション状態ストア プロバイダーの実装の例については、「 Session-State ストア プロバイダーの実装」を参照してください。
次のコード例は、カスタム セッション状態ストア プロバイダーを使用するように構成された 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>
注釈
セッション状態 ASP.NET セッション状態ストア プロバイダーを使用して、データ ストアとの間でセッション データの読み取りと書き込みを行います。 セッション状態ストア プロバイダーは、抽象クラスを継承し、そのメンバーを SessionStateStoreProviderBase データ ストアに固有の実装でオーバーライドするクラスです。 セッション状態ストア プロバイダーは、ASP.NET ページの処理中に クラスによって呼び出され SessionStateModule 、セッション変数と関連するセッション情報 (タイムアウト値など) の格納と取得のためにデータ ストアと通信します。
各 ASP.NET アプリケーション内のセッション データは、プロパティごとに SessionID 個別に格納されます。 ASP.NET アプリケーションはセッション データを共有しません。
このトピックの例に示すように、構成要素の sessionState
属性を mode
に設定しcustomProvider
、 属性をCustomカスタム プロバイダーの名前に設定することで、ASP.NET アプリケーションのカスタム実装を指定SessionStateStoreProviderBaseできます。
セッション ストア データのロック
ASP.NET アプリケーションは、同時要求への応答をサポートするためにマルチスレッド化されているため、同時要求が同じセッション情報へのアクセスを試みる可能性があります。 フレームセット内の複数のフレームがすべて同じアプリケーションにアクセスするシナリオを考えてみましょう。 フレームセット内の各フレームに対する個別の要求は、Web サーバー上で異なるスレッドで同時に実行できます。 各フレーム ソースの ASP.NET ページがセッション状態変数にアクセスする場合は、複数のスレッドがセッション ストアに同時にアクセスできます。
セッション ストアでのデータの競合と予期しないセッション状態の動作を回避するために、 クラスと SessionStateStoreProviderBase クラスには、SessionStateModuleASP.NET ページの実行期間中、特定のセッションのセッション ストア項目を排他的にロックするロック機能が含まれています。 属性が としてReadOnly
マークされている場合EnableSessionStateでも、同じアプリケーション内の他の ASP.NET ページがセッション ストアに書き込める可能性があるため、ストアからの読み取り専用セッション データの要求は、ロックされたデータが解放されるのを待つ可能性があることに注意してください。
メソッドの呼び出しで、要求の開始時にセッション ストア データにロックが設定されます GetItemExclusive 。 要求が完了すると、 メソッドの呼び出し中にロックが SetAndReleaseItemExclusive 解放されます。
オブジェクトは、 SessionStateModule メソッドまたは GetItem メソッドのGetItemExclusive呼び出し中にロックされたセッション データを検出した場合、ロックが解除されるか、セッション データがロックされている時間が プロパティのExecutionTimeout値を超えるまで、5 分間隔でセッション データを再要求します。 実行タイムアウトを超えた場合、 SessionStateModule オブジェクトは メソッドを ReleaseItemExclusive 呼び出してセッション ストア データを解放し、その時点でセッション ストア データを要求します。
ロックされたセッション ストア データは、現在の応答の メソッドの ReleaseItemExclusive 呼び出しの前に、別のスレッドの メソッドの SetAndReleaseItemExclusive 呼び出しによって解放された可能性があるため、別のセッションによって既に解放および変更されているセッション状態ストア データを設定および解放しようとしました。 この状況を回避するために、 GetItem メソッドと GetItemExclusive メソッドはロック識別子を返します。 ロックされたセッション ストア データを変更するには、このロック識別子を各要求に含める必要があります。 セッション ストア データは、データ ストア内のロック識別子が によって SessionStateModule指定されたロック識別子と一致する場合にのみ変更されます。
期限切れのセッション ストア データの削除
メソッドが特定の Abandon セッションに対して呼び出されると、そのセッションのデータは メソッドを使用して RemoveItem データ ストアから削除されます。それ以外の場合、データはセッション データ ストアに残り、セッションの今後の要求をサーバーに送信します。 期限切れのセッション データを SessionStateStoreProviderBase 削除するのは実装次第です。
コンストラクター
SessionStateStoreProviderBase() |
SessionStateStoreProviderBase クラスの新しいインスタンスを初期化します。 |
プロパティ
Description |
管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。 (継承元 ProviderBase) |
Name |
構成時にプロバイダーを参照するために使用される表示名を取得します。 (継承元 ProviderBase) |
メソッド
適用対象
こちらもご覧ください
.NET