OraclePersonalizationProvider
クラスにより、ASP.NET開発者は、Webパーツ・パーソナライズ情報をOracleデータベースに格納できます。
クラスの継承
System.Object
System.Configuration.Provider.ProviderBase
System.Web.UI.WebControls.WebParts.PersonalizationProvider
Oracle.Web.Personalization.OraclePersonalizationProvider
宣言
// C# public class OraclePersonalizationProvider: PersonalizationProvider
スレッド安全性
すべてのパブリック静的メソッドはスレッドセーフですが、インスタンス・メンバーがスレッドセーフであることは保証されません。
備考
このクラスにより、ASP.NETアプリケーションは、Oracleデータベースにパーソナライズ情報を格納し、管理できます。
例
次に、OraclePersonalizationProvider
をデフォルト・プロバイダとして使用するASP.NETアプリケーションのweb.config
の例を示します。この構成では、machine.config
ファイルで指定された接続文字列とデフォルト属性値を使用します。
<?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> <webParts> <personalization defaultProvider="OraclePersonalizationProvider"/> </webParts> </system.web> </configuration>
次に、OraclePersonalizationProvider
をデフォルト・プロバイダとして使用し、カスタマイズされた設定とアプリケーション固有の接続文字列を使用するASP.NETアプリケーションのweb.config
の例を示します。
<?xml version="1.0"?> <configuration xmlns= "http://schemas.microsoft.com/.NetConfiguration/v2.0"> <connectionStrings> <add name="my_personalization_app_con_string" connectionString= "User Id=scott;Password=tiger;Data Source=Oracle"/> </connectionStrings> <system.web> <webParts> <!-- Enable and customize OraclePersonalizationProvider --> <personalization defaultProvider="CustomOraclePersonalizationProvider"> <providers> <add name="CustomOraclePersonalizationProvider" type="Oracle.Web.Personalization.OraclePersonalizationProvider, Oracle.Web, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="my_personalization_app_con_string" applicationName="my_personalization_app"/> </providers> </personalization> </webParts> </system.web> </configuration>
applicationName
属性は、ASP.NETアプリケーションごとに一意の値に設定する必要があります。
要件
ネームスペース: Oracle.Web.Personalization
アセンブリ: Oracle.Web.dll
Oracle Providers for ASP.NETのバージョン: Oracle Providers for ASP.NET 2.0およびOracle Providers for ASP.NET 4
次の表にOraclePersonalizationProvider
メンバーをリストします。
OraclePersonalizationProviderコンストラクタ
OraclePersonalizationProvider
コンストラクタを、表8-1にリストします。
表8-1 OraclePersonalizationProviderコンストラクタ
コンストラクタ | 説明 |
---|---|
|
OraclePersonalizationProvider静的メソッド
OraclePersonalizationProvider
静的メソッドを、表8-2にリストします。
表8-2 OraclePersonalizationProvider静的メソッド
静的メソッド | 説明 |
---|---|
|
|
|
|
OraclePersonalizationProviderパブリック・プロパティ
OraclePersonalizationProvider
パブリック・プロパティを、表8-3にリストします。
表8-3 OraclePersonalizationProviderパブリック・プロパティ
パブリック・プロパティ | 説明 |
---|---|
|
アプリケーションに固有のパーソナライズ情報の指定に使用されるアプリケーションの名前を取得または設定します |
|
コマンドが例外で実行を終了するまでに実行可能な秒数を取得します |
|
|
|
|
OraclePersonalizationProviderパブリック・メソッド
OraclePersonalizationProvider
パブリック・メソッドを、表8-4にリストします。
表8-4 OraclePersonalizationProviderパブリック・メソッド
パブリック・メソッド | 説明 |
---|---|
|
スコープと特定の問合せパラメータに基づいて、ゼロ個以上の |
|
指定されたスコープ内の基礎となるOracleデータベース内の行数を戻します |
|
Oracle Personalization Providerを初期化します |
|
|
|
|
|
指定されたパラメータに基づいて、基礎となるデータ・ソースからパーソナライズ状態情報を削除します |
|
指定されたパラメータに基づいて、基礎となるOracleデータ・ソースからユーザー・パーソナライズ・データを削除します |
|
|
|
|
|
|
|
|
|
|
|
|
OraclePersonalizationProvider
コンストラクタは、OraclePersonalizationProvider
クラスのインスタンスを作成します。
オーバーロード・リスト:
OraclePersonalizationProvider()
このコンストラクタでは、OraclePersonalizationProvider
クラスのインスタンスが作成されます。
このコンストラクタでは、OraclePersonalizationProvider
クラスのインスタンスが作成されます。
宣言
// C# public OraclePersonalizationProvider();
備考
ASP.NETアプリケーションは、このコンストラクタを呼び出して、アプリケーション構成ファイルで指定されたとおりにOraclePersonalizationProvider
クラスのインスタンスを作成します。OraclePersonalizationProvider
インスタンスの初期化値は、Initialize
メソッドを通じて渡されます。
OraclePersonalizationProvider
静的メソッドを、表8-5にリストします。
OraclePersonalizationProvider
パブリック・プロパティを、表8-6にリストします。
表8-6 OraclePersonalizationProviderパブリック・プロパティ
パブリック・プロパティ | 説明 |
---|---|
|
アプリケーションに固有のパーソナライズ情報の指定に使用されるアプリケーションの名前を取得または設定します |
|
コマンドが例外で実行を終了するまでに実行可能な秒数を取得します |
|
|
|
|
このプロパティでは、パーソナライズ情報に固有のアプリケーションの名前を取得または設定します。
宣言
// C# public override string ApplicationName{get; set;}
プロパティ値
アプリケーションの名前。applicationName
属性がアプリケーション構成ファイルで指定されていない場合、または値が空の文字列の場合は、このプロパティがアプリケーションの仮想パスに設定されます。
例外
HttpException
- 呼び出し元に、ASP.NETホスティングに対する高い信頼性がありません。
ProviderException
- ApplicationName
文字列が256文字を超えています。
備考
ApplicationName
プロパティの主な目的は、OraclePersonalizationProvider
オブジェクトによって管理されるデータのスコープを指定することです。同じApplicationName
文字列を指定するアプリケーションは、Webパーツのパーソナライズ・サービスの構成時にパーソナライズ状態を共有しますが、一意のApplicationName
文字列を指定するアプリケーションはこれを共有しません。OraclePersonalizationProvider
は、パーソナライズ状態をアプリケーション名に関連付けて、パーソナライズ・データ・ソースに対して実行される操作のスコープをそれに応じて設定できるようにする必要があります。
次の例では、OraclePersonalizationProvider
がScott
という名前のユーザーとApp
という名前のアプリケーションのパーソナライズ状態を取得するために使用できる典型的なコードを示します。
SELECT * FROM PersonalizationState WHERE UserName='Scott' AND Path='~/Default.aspx' AND ApplicationName='App'
WHERE
句の最後のAND
は、同じユーザー名とパスでキーが付けられたパーソナライズ状態を含む他のアプリケーションが、App
アプリケーションと競合しないようにします。
構成ファイルのapplicationName
属性に値が指定されていない場合、デフォルトは現在のリクエストのApplicationPath
プロパティ値になります。構成ファイルの属性名は、大文字と小文字が区別されます。
ApplicationName
プロパティはスレッドセーフではありません。アプリケーション・コードでは、ユーザーにWebアプリケーションでのApplicationName
プロパティの設定を許可しないことをお薦めします。
OraclePersonalizationProvider
パブリック・メソッドを、表8-7にリストします。
表8-7 OraclePersonalizationProviderパブリック・メソッド
パブリック・メソッド | 説明 |
---|---|
|
スコープと特定の問合せパラメータに基づいて、ゼロ個以上の |
|
指定されたスコープ内の基礎となるOracleデータベース内の行数を戻します |
|
Oracle Personalization Providerを初期化します |
|
|
|
|
|
指定されたパラメータに基づいて、基礎となるデータ・ソースからパーソナライズ状態情報を削除します |
|
指定されたパラメータに基づいて、基礎となるOracleデータ・ソースからユーザー・パーソナライズ・データを削除します |
|
|
|
|
|
|
|
|
|
|
|
|
このメソッドは、スコープと固有の問合せパラメータに基づいて、ゼロ個以上のPersonalizationStateInfo
導出オブジェクトを含むコレクションを戻します。
宣言
// C# public override PersonalizationStateInfoCollection FindState(PersonalizationScope scope, PersonalizationStateQuery query, int pageIndex, int pageSize, out int totalRecords);
パラメータ
scope
パーソナライズ情報の問合せのスコープ(ユーザーまたは共有)。これはnull参照にできません。
query
パーソナライズ情報のフィルタ処理に使用する問合せ。これはnull参照にできます。
pageIndex
問合せが開始する場所。
pageSize
戻すレコード数。
totalRecords
使用可能なレコードの総数。
戻り値
0個以上のPersonalizationStateInfo
導出オブジェクトを含むPersonalizationStateInfoCollection
オブジェクト。
例外
ArgumentOutOfRangeException
- スコープに、PersonalizationScope.User
またはPersonalizationScope.Shared
以外の値が含まれます。
OracleException
- Oracle関連のエラーが発生しました。
ArgumentException
- 次のいずれかの条件が存在します。
pageSize
パラメータの値が0または1です。
pageIndex
またはpageSize
パラメータが0未満です。
((pageIndex * pageSize + pageSize
)- 1)がInt32.MaxValue
を超えています。-1は、レコードのゼロベース索引を考慮しています。
備考
PersonalizationStateInfo
導出オブジェクトは、英字順に戻され、Path
プロパティとUsername
プロパティの値の組合せで昇順にソートされます。
このメソッドは、問合せワイルドカード文字を基礎となるOracleデータベースに渡します。データベースは、query
パラメータのPathToMatch
プロパティ内の検索文字列テキストの先頭、末尾または途中に出現したワイルドカード文字で部分的なパスのワイルドカード検索を実行します。たとえば、PathToMatch
プロパティを~/appdir%
に設定すると、~/appdir
で始まるすべてのパスが見つかります。
同様に、部分的なユーザー名のワイルドカード検索では、ワイルドカード文字がquery
パラメータのUsernameToMatch
プロパティのテキスト文字列のどのポイントに出現してもかまいません。たとえば、scott
から始まるすべてのユーザー名を検索するには、UsernameToMatch
パラメータはscott%
のようになります。
次の問合せルールに従う必要があります。
scope
パラメータのみ指定され、query
パラメータがnull参照であるか、query
パラメータのすべてのプロパティがnull参照またはデフォルト値を戻す場合は、指定されたscope
パラメータに一致するすべてのレコードが戻されます。
PathToMatch
プロパティがnull参照でない場合、戻されるレコードでは、PathToMatch
値に一致するパスに基づくフィルタ処理も行われます。
UsernameToMatch
プロパティがnull参照でない場合、戻されるレコードでは、UsernameToMatch
プロパティ値に一致するユーザー名に基づくフィルタ処理も行われます。
UserInactiveSinceDate
プロパティがMaxValue
と等しくない場合は、戻されるレコードのフィルタ処理も行われ、非アクティブなユーザーに関連付けられているレコードのみ戻されます。比較には、Last
ActivityDate
プロパティがUser
Inactive
Since
Date
プロパティ以下であるレコードが含まれます。
このメソッドでは、問合せパラメータの組合せが検証されません。たとえば、アプリケーション・コードは、共有スコープ内の特定のユーザー名に関連付けられているパーソナライズ状態レコードのセットをリクエストできます。ユーザー名は共有情報に関連付けられていないため、戻されるコレクションは空です。
このメソッドは、指定されたスコープ内の基礎となるOracleデータベース内の行数を戻します。
宣言
// C# public override int GetCountOfState(PersonalizationScope scope, PersonalizationStateQuery query);
パラメータ
scope
パーソナライズ情報の問合せのスコープ(ユーザーまたは共有)。これはnull参照にできません。
query
パーソナライズ情報のフィルタ処理に使用する問合せ。これはnull参照にできます。
戻り値
指定されたスコープ・パラメータ内の基礎となるデータ・ソースの行数。
例外
ArgumentException
- query
のPathToMatch
またはUsernameToMatch
プロパティがnull以外の参照であり、切り捨て後に空の文字列("")になります。
ArgumentOutOfRangeException
- 指定されたスコープは、PersonalizationScope
列挙の有効値ではありません。
OracleException
- Oracle関連のエラーが発生しました。
備考
このメソッドは、問合せワイルドカード文字を基礎となるOracleデータベースに渡します。データベースは、query
パラメータのPathToMatch
プロパティ内の検索文字列テキストの先頭、末尾または途中に出現したワイルドカード文字で部分的なパスのワイルドカード検索を実行します。たとえば、PathToMatch
プロパティを~/appdir%
に設定すると、~/appdir
で始まるすべてのパスが見つかります。
同様に、部分的なユーザー名のワイルドカード検索では、ワイルドカード文字がquery
パラメータのUsernameToMatch
プロパティのテキスト文字列のどのポイントに出現してもかまいません。たとえば、scott
から始まるすべてのユーザー名を検索するには、UsernameToMatch
パラメータはscott%
のようになります。
次の問合せ制約に従う必要があります。
scope
パラメータのみ指定され、query
パラメータがnull参照であるか、query
パラメータのすべてのプロパティがnull参照またはデフォルト値を戻す場合は、指定されたscope
パラメータに一致するすべてのレコードが戻されます。
PathToMatch
プロパティがnull参照でない場合、戻されるレコードでは、PathToMatch
値に一致するパスに基づくフィルタ処理も行われます。
UsernameToMatch
プロパティがnull参照でない場合、戻されるレコードでは、UsernameToMatch
プロパティ値に一致するユーザー名に基づくフィルタ処理も行われます。
UserInactiveSinceDate
プロパティがMaxValue
と等しくない場合は、戻されるレコードのフィルタ処理も行われ、非アクティブなユーザーに関連付けられているレコードのみ戻されます。比較には、LastActivityDate
プロパティがUserInactiveSinceDate
プロパティ以下であるレコードが含まれます。
このメソッドは、OraclePersonalizationProvider
を、ASP.NETアプリケーション構成ファイル(web.config
)で指定されたプロパティ値で初期化します。
宣言
// C# public override void Initialize(string name, NameValueCollection config);
パラメータ
name
プロバイダのわかりやすい名前。
config
このプロバイダの名前/値のペアの構成オプションのコレクション。
例外
HttpException
- 現在の信頼レベルが「低」未満です。
InvalidOperationException
- すでに初期化されているプロバイダに対してInitialize
メソッドを呼び出そうとしました。
ArgumentNullException
- config
パラメータがnull参照です。
System.Configuration.Provider.ProviderException
- 次のいずれかの条件がアプリケーション構成ファイルに存在します。
connectionStringName
属性が空であるか、アプリケーション構成ファイルに存在しません。
connectionStringName
属性値の接続文字列の値が空であるか、指定されたconnectionStringName
属性がアプリケーション構成ファイルに存在しません。
applicationName
属性値が256文字を超えています。
このOraclePersonalizationProvider
インスタンスのアプリケーション構成ファイルには、認識されていない属性が含まれます。
備考
Initialize
メソッドは、アプリケーションによって直接呼び出されることを意図していません。
このメソッドは、指定されたパラメータに基づいて、基礎となるデータ・ソースからパーソナライズ状態情報を削除します。
宣言
// C# public override int ResetState(PersonalizationScope scope, string[] paths, string[] usernames);
パラメータ
scope
問合せを行うパーソナライズ情報を示すPersonalizationScope
型。この値はnull参照にできません。
paths
削除する共有scope
パラメータ内のパーソナライズ情報のパス。
usernames
ユーザーscope
パラメータ内の削除するパーソナライズ情報のユーザー名。
戻り値
削除する行数。
例外
ArgumentOutOfRangeException
- 指定されたscope
パラメータは、PersonalizationScope
列挙値のメンバーではありません。
OracleException
- Oracle関連のエラーが発生しました。
ArgumentException
- 次のいずれかの条件が存在します。
paths
またはusernames
パラメータが空の配列です。
paths
配列またはusernames
配列の属性が検証ルールを満たしていません。検証ルールについては、次の「備考」の項を参照してください。
備考
このメソッドは、操作を単一のアトミック・トランザクションとして実行します。
それぞれの配列に含まれるpaths
およびusernames
要素は、次の検証ルールを満たす必要があります。検証ルールがパラメータ配列のいずれかのメンバーで失敗した場合は、ArgumentException
例外がスローされます。検証ルールは次のとおりです。
Null参照値は許可されません。
空の文字列("")は使用できません。空の文字列チェックを実行する前に、パラメータを切り捨てる必要があります。
usernames
配列にカンマ(,)を含めることはできません。
このメソッドは、指定されたパラメータに基づいて、基礎となるOracleデータ・ソースからユーザー・パーソナライズ・データを削除します。
宣言
// C# public override int ResetUserState(string path, DateTime userInactiveSinceDate);
パラメータ
path
削除するパーソナライズ・データのパス。この値はnull参照にできますが、空の文字列("")にはできません。
userInactiveSinceDate
最後のアクティビティを示す日付。
戻り値
基礎となるOracleデータ・ソースから削除された行数。
例外
ArgumentException
- path
パラメータが空の文字列です。
OracleException
- Oracle関連のエラーが発生しました。
備考
このメソッドのパラメータには次の制限があります。
path
パラメータにワイルドカード文字を含めることはできません。
path
パラメータがnull参照以外の場合は、path
パラメータに関連付けられているユーザーごとのパーソナライズ・レコードのみ削除されます。
userInactiveSinceDate
パラメータで指定された日付以降は非アクティブとみなされる、ユーザーに関連付けられたユーザーごとのパーソナライズのみ削除されます。厳密な比較によって、Last Activity Date
プロパティがuserInactiveSinceDate
パラメータ以下のレコードが削除されます。
両方のパラメータが指定されている場合は、両方の制約に一致するレコードが削除されます。
path
パラメータはnull参照にできます。
path
パラメータは、切り捨てた後で空の文字列であってはなりません。
userInactiveSinceDate
パラメータはnull参照にできません。