SessionStateStoreProviderBase SessionStateStoreProviderBase SessionStateStoreProviderBase SessionStateStoreProviderBase Class

定義

データ ストアのセッション状態プロバイダーに必要なメンバーを定義します。Defines the required members of a session-state provider for a data store.

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

セッション状態ストアプロバイダーの実装の例については、「セッション状態ストアプロバイダーの実装」を参照してください。For an example of a session-state store provider implementation, see Implementing a Session-State Store Provider.

次のコード例は、カスタムセッション状態ストアプロバイダーを使用するように構成されている ASP.NET アプリケーションの Web.config ファイルを示しています。The following code example shows the Web.config file for an ASP.NET application that is configured to use a custom session-state store provider.

<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 session state は、セッション状態ストアプロバイダーを使用して、データストアとの間でセッションデータの読み取りと書き込みを行います。ASP.NET session state reads and writes session data from and to a data store using a session-state store provider. セッション状態ストアプロバイダーは、 SessionStateStoreProviderBase抽象クラスを継承し、そのメンバーをデータストア固有の実装でオーバーライドするクラスです。A session-state store provider is a class that inherits the SessionStateStoreProviderBase abstract class and overrides its members with implementations specific to the data store. セッション状態ストアプロバイダーは、ASP.NET ページの処理SessionStateModule中にクラスによって呼び出され、セッション変数と、タイムアウト値などの関連セッション情報の格納と取得のためにデータストアと通信します。The session-state store provider is called by the SessionStateModule class during the processing of an ASP.NET page to communicate with the data store for the storage and retrieval of session variables and related session information such as the time-out value.

各 ASP.NET アプリケーション内のセッションデータは、プロパティごとSessionIDに個別に格納されます。Session data within each ASP.NET application is stored separately for each SessionID property. ASP.NET アプリケーションは、セッションデータを共有しません。ASP.NET applications do not share session data.

SessionStateStoreProviderBase ASP.NET アプリケーションのカスタム実装を指定するには、 sessionState構成要素modeの属性をにCustom設定し、 customProvider属性をカスタムプロバイダーの名前に設定します。このトピックの例を参照してください。You can specify a custom SessionStateStoreProviderBase implementation for an ASP.NET application by setting the mode attribute of the sessionState configuration element to Custom and the customProvider attribute to the name of the custom provider, as shown in the example for this topic.

セッションストアデータのロックLocking Session Store Data

ASP.NET アプリケーションは同時実行要求への応答をサポートするためにマルチスレッド化されるため、同時実行要求が同じセッション情報にアクセスしようとする可能性があります。Because ASP.NET applications are multithreaded to support responding to concurrent requests, it is possible that concurrent requests might attempt to access the same session information. 1つのフレームセット内の複数のフレームが同じアプリケーションにアクセスするシナリオを考えてみましょう。Consider a scenario where multiple frames in a frameset all access the same application. フレームセット内の各フレームに対する個別の要求は、Web サーバー上で別々のスレッドで同時に実行できます。The separate requests for each frame in the frameset can be executed on the Web server concurrently on different threads. 各フレームソースの ASP.NET ページがセッション状態変数にアクセスする場合、セッションストアに同時にアクセスする複数のスレッドを持つことができます。If the ASP.NET pages for each frame source access session-state variables, then you could have multiple threads accessing the session store concurrently.

セッションストアでのデータの競合を回避し、予期しないセッション状態SessionStateModuleSessionStateStoreProviderBase動作を回避するために、クラスとクラスには、次の期間に特定のセッションのセッションストア項目を排他的にロックするロック機能が含まれています。ASP.NET ページの実行。To avoid data collisions at the session store and unexpected session-state behavior, the SessionStateModule and SessionStateStoreProviderBase classes include lock functionality that exclusively locks the session store item for a particular session for the duration of the execution of an ASP.NET page. EnableSessionState属性がとしてReadOnlyマークされている場合でも、同じアプリケーション内の他の ASP.NET ページはセッションストアに書き込むことができます。そのため、ストアからの読み取り専用セッションデータの要求は、ロックされたデータが格納されるのを待機している可能性があります。取り除く.Note that even if the EnableSessionState attribute is marked as ReadOnly, other ASP.NET pages in the same application might be able to write to the session store, so a request for read-only session data from the store might still end up waiting for locked data to be freed.

ロックは、 GetItemExclusiveメソッドの呼び出しで、要求の開始時にセッションストアデータに対して設定されます。A lock is set on session-store data at the beginning of the request, in the call to the GetItemExclusive method. 要求が完了すると、メソッドのSetAndReleaseItemExclusive呼び出し中にロックが解放されます。When the request completes, the lock is released during the call to the SetAndReleaseItemExclusive method.

オブジェクトがSessionStateModuleGetItemメソッドGetItemExclusiveまたはメソッドの呼び出し中にロックされたセッションデータを検出した場合、ロックが解除されるか、または次の時間が経過するまで、セッションデータを0.5 秒間隔で再要求します。セッションデータがロックされていますがExecutionTimeout 、プロパティの値を超えています。If the SessionStateModule object encounters locked session data during the call to either the GetItemExclusive or the GetItem method, it will re-request the session data at half-second intervals until either the lock is released or the amount of time that the session data has been locked exceeds the value of the ExecutionTimeout property. 実行タイムアウトを超えた場合、 SessionStateModuleオブジェクトはReleaseItemExclusiveメソッドを呼び出して、セッションストアデータを解放し、その時点でセッションストアデータを要求します。If the execution time out is exceeded, the SessionStateModule object will call the ReleaseItemExclusive method to free the session-store data and request the session-store data at that time.

ロックされたセッションストアデータは、現在の応答のReleaseItemExclusive SetAndReleaseItemExclusiveメソッドを呼び出す前に、別のスレッドでメソッドの呼び出しによって解放されている可能性があるため、を使用して、既に解放され、別のセッションによって変更されています。Because locked session-store data might have been freed by a call to the ReleaseItemExclusive method on a separate thread before the call to the SetAndReleaseItemExclusive method for the current response, an attempt could be made to set and release session-state store data that has already been released and modified by another session. このような状況を回避GetItemするGetItemExclusiveために、メソッドとメソッドはロック識別子を返します。To avoid this situation, the GetItem and GetItemExclusive methods return a lock identifier. ロックされたセッションストアデータを変更するには、このロック識別子を各要求に含める必要があります。This lock identifier must be included with each request to modify locked session-store data. セッションストアのデータは、 SessionStateModuleデータストア内のロック識別子がによって指定されたロック識別子と一致する場合にのみ変更されます。Session-store data is modified only if the lock identifier in the data store matches the lock identifier supplied by the SessionStateModule.

期限切れのセッションストアデータを削除していますDeleting Expired Session Store Data

特定のセッションに対してRemoveItem メソッドが呼び出されると、メソッドを使用してそのセッションのデータがデータストアから削除されます。それ以外の場合は、セッションの今後の要求に対して、データはセッションデータストアに残ります。AbandonWhen the Abandon method is called for a particular session, the data for that session is deleted from the data store using the RemoveItem method; otherwise, the data will remain in the session data store to server future requests for the session. 期限切れのセッションデータSessionStateStoreProviderBaseを削除するには、実装する必要があります。It is up to the SessionStateStoreProviderBase implementation to delete expired session data.

コンストラクター

SessionStateStoreProviderBase() SessionStateStoreProviderBase() SessionStateStoreProviderBase() SessionStateStoreProviderBase()

SessionStateStoreProviderBase クラスの新しいインスタンスを初期化します。Initializes a new instance of the SessionStateStoreProviderBase class.

メソッド

CreateNewStoreData(HttpContext, Int32) CreateNewStoreData(HttpContext, Int32) CreateNewStoreData(HttpContext, Int32) CreateNewStoreData(HttpContext, Int32)

現在の要求で使用する SessionStateStoreData オブジェクトを新規作成します。Creates a new SessionStateStoreData object to be used for the current request.

CreateUninitializedItem(HttpContext, String, Int32) CreateUninitializedItem(HttpContext, String, Int32) CreateUninitializedItem(HttpContext, String, Int32) CreateUninitializedItem(HttpContext, String, Int32)

新しいセッション状態項目をデータ ストアに追加します。Adds a new session-state item to the data store.

Dispose() Dispose() Dispose() Dispose()

SessionStateStoreProviderBase の実装によって使用されているすべてのリソースを解放します。Releases all resources used by the SessionStateStoreProviderBase implementation.

EndRequest(HttpContext) EndRequest(HttpContext) EndRequest(HttpContext) EndRequest(HttpContext)

要求の最後に SessionStateModule オブジェクトによって呼び出されます。Called by the SessionStateModule object at the end of a request.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

セッション データ ストアから読み取り専用のセッション状態データを返します。Returns read-only session-state data from the session data store.

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

セッション データ ストアから読み取り専用のセッション状態データを返します。Returns read-only session-state data from the session data store.

GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
Initialize(String, NameValueCollection) Initialize(String, NameValueCollection) Initialize(String, NameValueCollection) Initialize(String, NameValueCollection)

構成ビルダーを初期化します。Initializes the configuration builder.

(Inherited from ProviderBase)
InitializeRequest(HttpContext) InitializeRequest(HttpContext) InitializeRequest(HttpContext) InitializeRequest(HttpContext)

要求ごとの初期化のために、SessionStateModule オブジェクトによって呼び出されます。Called by the SessionStateModule object for per-request initialization.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ReleaseItemExclusive(HttpContext, String, Object) ReleaseItemExclusive(HttpContext, String, Object) ReleaseItemExclusive(HttpContext, String, Object) ReleaseItemExclusive(HttpContext, String, Object)

セッション データ ストアの項目のロックを解除します。Releases a lock on an item in the session data store.

RemoveItem(HttpContext, String, Object, SessionStateStoreData) RemoveItem(HttpContext, String, Object, SessionStateStoreData) RemoveItem(HttpContext, String, Object, SessionStateStoreData) RemoveItem(HttpContext, String, Object, SessionStateStoreData)

セッション データ ストアから項目データを削除します。Deletes item data from the session data store.

ResetItemTimeout(HttpContext, String) ResetItemTimeout(HttpContext, String) ResetItemTimeout(HttpContext, String) ResetItemTimeout(HttpContext, String)

セッション データ ストアの項目の有効期限の日時を更新します。Updates the expiration date and time of an item in the session data store.

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

現在の要求の値を使用してセッション状態データ ストアのセッション項目の情報を更新し、データのロックを解除します。Updates the session-item information in the session-state data store with values from the current request, and clears the lock on the data.

SetItemExpireCallback(SessionStateItemExpireCallback) SetItemExpireCallback(SessionStateItemExpireCallback) SetItemExpireCallback(SessionStateItemExpireCallback) SetItemExpireCallback(SessionStateItemExpireCallback)

Global.asax ファイルに定義されている Session_OnEnd イベントの SessionStateItemExpireCallback デリゲートへの参照を設定します。Sets a reference to the SessionStateItemExpireCallback delegate for the Session_OnEnd event defined in the Global.asax file.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

プロパティ

Description Description Description Description

管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).

(Inherited from ProviderBase)
Name Name Name Name

構成時にプロバイダーを参照するために使用される表示名を取得します。Gets the friendly name used to refer to the provider during configuration.

(Inherited from ProviderBase)

適用対象

こちらもご覧ください