次の方法で共有


SessionStateStoreProviderBase クラス

定義

データ ストアのセッション状態プロバイダーに必要なメンバーを定義します。

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
継承
SessionStateStoreProviderBase

セッション状態ストア プロバイダーの実装の例については、「 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)

メソッド

CreateNewStoreData(HttpContext, Int32)

現在の要求で使用する SessionStateStoreData オブジェクトを新規作成します。

CreateUninitializedItem(HttpContext, String, Int32)

新しいセッション状態項目をデータ ストアに追加します。

Dispose()

SessionStateStoreProviderBase の実装によって使用されているすべてのリソースを解放します。

EndRequest(HttpContext)

要求の最後に SessionStateModule オブジェクトによって呼び出されます。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

セッション データ ストアから読み取り専用のセッション状態データを返します。

GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

セッション データ ストアから読み取り専用のセッション状態データを返します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Initialize(String, NameValueCollection)

構成ビルダーを初期化します。

(継承元 ProviderBase)
InitializeRequest(HttpContext)

要求ごとの初期化のために、SessionStateModule オブジェクトによって呼び出されます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ReleaseItemExclusive(HttpContext, String, Object)

セッション データ ストアの項目のロックを解除します。

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

セッション データ ストアから項目データを削除します。

ResetItemTimeout(HttpContext, String)

セッション データ ストアの項目の有効期限の日時を更新します。

SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean)

現在の要求の値を使用してセッション状態データ ストアのセッション項目の情報を更新し、データのロックを解除します。

SetItemExpireCallback(SessionStateItemExpireCallback)

Global.asax ファイルに定義されている Session_OnEnd イベントの SessionStateItemExpireCallback デリゲートへの参照を設定します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください