OracleSessionStateStore
クラスにより、ASP.NETアプリケーションは、セッション情報をOracleデータベースに格納できます。
クラスの継承
System.Object
System.Configuration.Provider.ProviderBase
System.Web.SessionState.SessionStateStoreProviderBase
Oracle.Web.SessionState
宣言
// C# public class OracleSessionStateStore : SessionStateStoreProviderBase
スレッド安全性
すべてのパブリック静的メソッドはスレッドセーフですが、インスタンス・メンバーがスレッドセーフであることは保証されません。
備考
このクラスにより、ASP.NETアプリケーションは、Oracleデータベースにセッション状態情報を格納し、管理できます。このプロバイダが管理するセッション情報は、データベース・セッション情報ではなくアプリケーション・セッション情報を管理することに注意してください。
期限切れのセッション・データはデータベースから定期的に削除されます。
例
次に、OracleSessionStateStore
をデフォルト・プロバイダとして使用し、カスタマイズされた設定とアプリケーション固有の接続文字列を使用するASP.NETアプリケーションのweb.config
の例を示します。
<?xml version="1.0"?> <configuration xmlns= "http://schemas.microsoft.com/.NetConfiguration/v2.0"> <connectionStrings> <add name="my_sessionstate_app_con_string" connectionString= "User Id=scott;Password=tiger;Data Source=Oracle"/> </connectionStrings> <system.web> <!-- Enable and customize OracleSessionStateProvider --> <sessionState mode="Custom" customProvider="MyOracleSessionStateStore"> <providers> <add name="MyOracleSessionStateStore" type="Oracle.Web.SessionState.OracleSessionStateStore, Oracle.Web, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="my_sessionstate_app_con_string"/> </providers> </sessionState> </system.web> </configuration>
要件
ネームスペース: Oracle.Web.SessionState
アセンブリ: Oracle.Web.dll
Oracle Providers for ASP.NETのバージョン: Oracle Providers for ASP.NET 2.0およびOracle Providers for ASP.NET 4
次の表にOracleSessionStateStore
メンバーをリストします。
OracleSessionStateStoreコンストラクタ
OracleSessionStateStore
コンストラクタを、表5-1にリストします。
OracleSessionStateStoreパブリック・プロパティ
OracleSessionStateStore
パブリック・プロパティを、表5-2にリストします。
表5-2 OracleSessionStateStoreパブリック・プロパティ
パブリック・プロパティ | 説明 |
---|---|
|
コマンドが例外で実行を終了するまでに実行可能な秒数を取得します |
|
|
|
|
OracleSessionStateStoreパブリック・メソッド
OracleSessionStateStore
パブリック・メソッドを、表5-3にリストします。
表5-3 OracleSessionStateStoreパブリック・メソッド
パブリック・メソッド | 説明 |
---|---|
|
現在のリクエストに対して新しい |
|
データベースに新しいセッション状態項目を追加します |
|
このインスタンスのすべてのリソースを解放します |
|
|
|
データベースから読取り専用セッション項目を戻します |
|
データベースのセッション項目をロックして戻します |
|
ASP.NETアプリケーションの構成ファイルで指定されたプロパティ値でプロバイダを初期化します |
|
|
|
セッション項目の取得試行が複数回失敗した場合に、データベース内のセッション項目に対するロックを解除します |
|
指定されたセッション項目をデータベースから削除します |
|
データベース内のセッション項目の失効日とタイムアウトをリセットします |
|
指定されたセッション項目でデータベース内のセッション時間情報を更新し、ロックを解除します |
|
期限切れのセッションのコールバックがサポートされていないことを示す |
OracleSessionStateStore
コンストラクタでは、OracleSessionStateStore
クラスの新規インスタンスをインスタンス化します。
オーバーロード・リスト:
このコンストラクタでは、OracleSessionStateStore
クラスのインスタンスが作成されます。
OracleSessionStateStore
パブリック・プロパティを、表5-4にリストします。
表5-4 OracleSessionStateStoreパブリック・プロパティ
パブリック・プロパティ | 説明 |
---|---|
|
コマンドが例外で実行を終了するまでに実行可能な秒数を取得します |
|
|
|
|
OracleSessionStateStore
パブリック・メソッドを、表5-5にリストします。
表5-5 OracleSessionStateStoreパブリック・メソッド
パブリック・メソッド | 説明 |
---|---|
|
現在のリクエストに対して新しい |
|
データベースに新しいセッション状態項目を追加します |
|
このインスタンスのすべてのリソースを解放します |
|
|
|
データベースから読取り専用セッション項目を戻します |
|
データベースのセッション項目をロックして戻します |
|
ASP.NETアプリケーションの構成ファイルで指定されたプロパティ値でプロバイダを初期化します |
|
|
|
セッション項目の取得試行が複数回失敗した場合に、データベース内のセッション項目に対するロックを解除します |
|
指定されたセッション項目をデータベースから削除します |
|
データベース内のセッション項目の失効日とタイムアウトをリセットします |
|
指定されたセッション項目でデータベース内のセッション時間情報を更新し、ロックを解除します |
|
期限切れのセッションのコールバックがサポートされていないことを示す |
このメソッドは、現在のリクエストに対して新しいSessionStateStoreData
オブジェクトを作成します。
宣言
// C# public override SessionStateStoreData CreateNewStoreData(HttpContext context, int timeout);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
timeout
作成されるSessionStateStoreData
オブジェクトのタイムアウト値。
戻り値
現在のリクエストに対する新しいSessionStateStoreData
オブジェクト。
備考
このメソッドは、HttpContext
とタイムアウト値に基づいて、現在のリクエストに対して新しいSessionStateStoreData
オブジェクトを作成します。リクエストにセッションIDが含まれていない場合、またはデータベースに見つからないセッションのセッションIDがリクエストに含まれている場合は、SessionStateModule
がASP.NETページに対するリクエストの先頭でこのメソッドを呼び出します。このメソッドは、空のISessionStateItemCollection
オブジェクト、HttpStaticObjectsCollection
コレクションおよび指定されたタイムアウト値で新しいSessionStateStoreData
オブジェクトを作成します。
このメソッドは、データベースに新しいセッション状態項目を追加します。
宣言
// C# public override void CreateUninitializedItem(HttpContext context, string id, int timeout);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
timeout
現在のリクエストのタイムアウト値。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
備考
このメソッドは、データベースに初期化されていないセッション状態エントリを追加し、cookieless
属性とregenerateExpiredId
属性がどちらもtrue
に設定されている場合に呼び出されます。
新しいセッションIDを作成した後で、このメソッドが呼び出され、この新しいセッションIDを持つ初期化されていないエントリがデータベースに格納されます。ブラウザは、新しいセッションIDを含むURLにリダイレクトされます。新しいセッションIDはデータベースに存在するため、期限切れのセッションIDと競合しません。
このメソッドは、このインスタンスのすべてのリソースを解放します。
宣言
// C# public override void Dispose();
備考
このメソッドは、アプリケーション・ドメインが閉じられたときにこのインスタンスのすべてのリソースを解放します。
このメソッドは、OracleSessionStateStore
オブジェクトが現在のリクエストに必要な可能性のあるクリーンアップを実行できるようにします。
宣言
// C#
public override void EndRequest(HttpContext context);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
備考
このメソッドは、リクエストの最後にSessionStateModule
オブジェクトによって呼び出されます。
このメソッドは、データベースから読取り専用セッション項目を戻します。
宣言
// C# public override SessionStateStoreData GetItem(HttpContext context, string id, out bool locked, out TimeSpan lockAge, out Object lockId, out SessionStateActions actions);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
locked
セッション項目がデータベース内でロックされている場合はtrue
で、それ以外の場合はfalse
であるブール値。
lockAge
セッション項目がデータベース内でロックされていた時間の長さを示すTimeSpan
オブジェクト。
lockId
ロック識別子オブジェクト。
actions
セッションが初期化されず、cookieがないかどうかを示すSessionStateActions
列挙値。
戻り値
データベースからのセッション情報を含むSessionStateStoreData
オブジェクト。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
System.Configuration.Provider.ProviderException
- セッション状態情報が無効であり、破損している可能性があります。
備考
このメソッドは、データベースから読取り専用SessionStateStoreData
オブジェクトを戻し、セッション項目の失効日を更新します。このメソッドは、リクエストの先頭でセッション状態サービスによって呼び出されます。ページのEnableSessionState
属性がReadOnly
に設定されている場合にのみ呼び出されます。
セッション・データが見つからない場合は、locked
パラメータがfalse
に設定され、null参照が戻されます。セッション状態サービスは、CreateNewStoreData
メソッドを呼び出して、データベースに新しいセッション項目を作成します。
セッション・データがデータベースでロックされている場合は、locked
パラメータがtrue
に設定され、lockAge
パラメータは、データベースでセッション項目がロックされていた時間の長さに設定されます。lockId
パラメータはロック識別子に設定され、null参照が戻されます。セッション状態サービスは、このメソッドを0.5秒間隔で呼び出し続けます。lockAge
値がHttpRuntimeSection.ExecutionTimeout
値を超えた場合、セッション状態サービスはReleaseItemExclusive
メソッドを呼び出してロックを解除します。さらに、GetItem
メソッドを再度呼び出します。
このメソッドは、セッション項目をロックし、データベースからそのセッション項目を戻します。
宣言
// C# public override SessionStateStoreData GetItemExclusive(HttpContext context, string id, out bool locked, out TimeSpan lockAge, out Object lockId, out SessionStateActions actions);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
locked
セッション項目がデータベース内で正常にロックされた場合はtrue
で、それ以外の場合はfalse
であるブール値。
lockAge
セッション項目がデータベース内でロックされていた時間の長さを示すTimeSpan
オブジェクト。
lockId
ロック識別子オブジェクト。
actions
セッションが初期化されず、cookieがないかどうかを示すSessionStateActions
列挙値。
戻り値
データベースからのセッション情報を含むSessionStateStoreData
オブジェクト。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
System.Configuration.Provider.ProviderException
- セッション状態情報が無効であり、破損している可能性があります。
備考
このメソッドは、データベースからSessionStateStoreData
オブジェクトを戻し、セッション項目の失効日を更新します。このメソッドは、ページ内の属性がデフォルト値のtrueに設定されている場合にのみ呼び出されます。セッション項目は、他のリクエストによって現在使用されていない場合にのみ取得されます。リクエストの継続中は、データベース内のセッション項目がロックされます。
セッション・データが見つからない場合は、locked
パラメータがfalse
に設定され、null参照が戻されます。セッション状態サービスは、CreateNewStoreData
メソッドを呼び出して、データベースにnewsession
項目を作成します。
セッション・データがデータベースでロックされている場合は、locked
パラメータがtrue
に設定され、lockAge
パラメータは、データベースでセッション項目がロックされていた時間の長さに設定されます。lockId
パラメータはロック識別子に設定され、null参照が戻されます。セッション状態サービスは、このメソッドを0.5秒間隔で呼び出し続けます。lockAge
値がExecutionTimeout
値を超えた場合、セッション状態サービスはReleaseItemExclusive
メソッドを呼び出してロックを解除します。さらに、GetItemExclusive
メソッドを再度呼び出します。
このメソッドは、プロバイダを、ASP.NETアプリケーション構成ファイル(web.config
)で指定されたプロパティ値で初期化します。
宣言
// C# public override void Initialize(string name, NameValueCollection config);
パラメータ
name
初期化するプロバイダ・インスタンスの名前。
config
プロバイダの構成オプションの名前と値を含むSystems.Collections.Specialized.NameValueCollection
オブジェクト。
例外
ArgumentNullException
- config
パラメータがnullです。
System.Configuration.Provider.ProviderException
- connectionStringName
属性が空であるか、構成ファイルに存在しません。または、構成ファイルに無効な属性が見つかりました。
備考
Initialize
メソッドは、アプリケーションによって直接呼び出されることを意図していません。
このメソッドは、OracleSessionStateStore
プロバイダが必要とするリクエストごとの初期化を実行します。
宣言
// C#
public override void InitializeRequest(HttpContext context);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
例外
ArgumentNullException
- context
パラメータがnullです。
備考
このメソッドは、他のメソッドを呼び出す前にセッション状態サービスによって呼び出されます。
このメソッドは、セッション項目の取得試行が複数回失敗した場合に、データベース内のセッション項目に対するロックを強制的に解除します。
宣言
// C# public override void ReleaseItemExclusive(HttpContext context, string id, Object lockId);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
lockId
現在のリクエストのロック識別子。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
備考
このメソッドは、データベース内のセッション項目に対するロックを解除し、失効日を更新するために、セッション状態サービスによって呼び出されます。SessionStateModule
は、セッション値が変更されていない場合、またはロックがHttpRuntimeSection.ExecutionTimeout
プロパティ値を超えている場合に、リクエストの最後にこのメソッドを呼び出します。
このメソッドは、指定されたセッション項目をデータベースから削除します。
宣言
// C# public override void RemoveItem(HttpContext context, string id, Object lockId, SessionStateStoreData item);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
lockId
現在のリクエストのロック識別子。
item
データベースから削除するセッション項目。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
備考
セッション状態サービスは、このメソッドを呼び出して、指定されたセッション項目をデータベースから削除します。アプリケーションは、Session.Abandon
メソッドを呼び出して、セッションを取り消すことができます。
このメソッドは、データベース内のセッション項目の失効日とタイムアウトをリセットします。
宣言
// C# public override void ResetItemTimeout(HttpContext context, string id);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
備考
セッション状態サービスは、このメソッドを呼び出して、データベース内のセッション項目の失効日とタイムアウトを現在の日時にリセットします。
このメソッドは、指定されたセッション項目でデータベース内のセッション時間情報を更新し、ロックを解除します。
宣言
// C# public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreDataItem item, Object lockId, bool newItem);
パラメータ
context
現在のリクエストのHttpContext
オブジェクト。
id
現在のリクエストのセッションID。
item
データベース内のセッション項目を更新する新しい値を含むセッション項目。
LockId
現在のリクエストのロック識別子。
newItem
セッション項目がデータベース内で新規かどうかを示すブール値。false
値は、既存の項目を示します。
例外
ArgumentNullException
- 入力パラメータはNullです。
OracleException
- Oracle関連のエラーが発生しました。
備考
セッション項目が変更された場合、セッション状態サービスは、リクエストの最後にこのメソッドを呼び出して、指定されたセッション値でデータベース内に新規項目を作成するか、既存のセッション項目を更新します。このメソッドは、セッション項目の期限も更新し、セッション・データに対するロックを解除します。
このメソッドは、期限切れのセッションのコールバックがサポートされないことを示すfalse
値を戻します。
宣言
// C#
public override bool SetItemExpireCallback(SessionStateItemExpireCallback
expireCallback);
パラメータ
expireCallback
Global.asax
ファイルで定義されているSession_OnEnd
イベントの委任。
戻り値
false
値。
備考
このメソッドは、期限切れのセッションのコールバックがサポートされないことを示すfalse
値を常に戻します。