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にリストします。
表8-5 OraclePersonalizationProvider静的メソッド
| 静的メソッド | 説明 |
|---|---|
|
|
|
|
|
|
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プロパティの設定を許可しないことをお薦めします。
このプロパティは、コマンドが例外で実行を終了するまでに実行可能な秒数を取得します。
宣言
// C#
public int CommandTimeout {get;}
プロパティ値
int
備考
プロバイダをカスタマイズするために、ASP.NET開発者は、commandTimeout属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。
デフォルト値は30秒です。構成ファイルの属性名は、大文字と小文字が区別されます。
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参照にできません。