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 アプリケーションはセッション データを共有しません。
このトピックの例に示すように、構成要素の 属性を mode
に設定しcustomProvider
、 属性をsessionState
カスタム プロバイダーの名前に設定することで、ASP.NET アプリケーションのカスタム実装を指定SessionStateStoreProviderBaseCustomできます。
セッション ストア データのロック
ASP.NET アプリケーションは同時要求への応答をサポートするためにマルチスレッドであるため、同時要求が同じセッション情報へのアクセスを試みる可能性があります。 フレームセット内の複数のフレームがすべて同じアプリケーションにアクセスするシナリオを考えてみましょう。 フレームセット内の各フレームに対する個別の要求は、Web サーバー上で異なるスレッドで同時に実行できます。 各フレーム ソースの ASP.NET ページがセッション状態変数にアクセスする場合は、複数のスレッドがセッション ストアに同時にアクセスできます。
セッション ストアでのデータ競合と予期しないセッション状態の動作を回避するために、 クラスと SessionStateStoreProviderBase クラスには、SessionStateModuleASP.NET ページの実行期間中、特定のセッションのセッション ストア項目を排他的にロックするロック機能が含まれます。 属性が としてReadOnly
マークされている場合EnableSessionStateでも、同じアプリケーション内の他の ASP.NET ページがセッション ストアに書き込める可能性があるため、ストアからの読み取り専用セッション データの要求が、ロックされたデータの解放を待機している可能性があることに注意してください。
メソッドの呼び出しで、要求の開始時にセッション ストア データにロックが設定されます GetItemExclusive 。 要求が完了すると、 メソッドの呼び出し中にロックが SetAndReleaseItemExclusive 解除されます。
オブジェクトはSessionStateModule、 メソッドまたは GetItem メソッドのGetItemExclusive呼び出し中にロックされたセッション データを検出した場合、ロックが解除されるか、セッション データがロックされている時間が プロパティの値を超えるまで、半秒間隔でセッション データをExecutionTimeout再要求します。 実行タイムアウトを超えた場合、 SessionStateModule オブジェクトは メソッドを ReleaseItemExclusive 呼び出してセッション ストア データを解放し、その時点でセッション ストア データを要求します。
ロックされたセッション ストア データは、現在の応答に対するメソッドの ReleaseItemExclusive 呼び出しの前に、別のスレッドの メソッドの SetAndReleaseItemExclusive 呼び出しによって解放された可能性があるため、別のセッションによって既に解放および変更されているセッション状態ストア データを設定および解放しようとする可能性があります。 この状況を回避するために、 GetItem メソッドと GetItemExclusive メソッドはロック識別子を返します。 ロックされたセッション ストア データを変更するには、このロック識別子を各要求に含める必要があります。 セッション ストア データは、データ ストア内のロック識別子が によって SessionStateModule提供されるロック識別子と一致する場合にのみ変更されます。
期限切れのセッション ストア データの削除
メソッドが特定の Abandon セッションに対して呼び出されると、そのセッションのデータは メソッドを使用して RemoveItem データ ストアから削除されます。それ以外の場合、データはセッションに対する今後の要求をサーバーに対してセッション データ ストアに保持します。 期限切れのセッション データを SessionStateStoreProviderBase 削除するのは、実装次第です。
コンストラクター
SessionStateStoreProviderBase() |
SessionStateStoreProviderBase クラスの新しいインスタンスを初期化します。 |
プロパティ
Description |
管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。 (継承元 ProviderBase) |
Name |
構成時にプロバイダーを参照するために使用される表示名を取得します。 (継承元 ProviderBase) |
メソッド
適用対象
こちらもご覧ください
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示