ASP.NET プロファイル プロパティの概要

更新 : 2007 年 11 月

多くのアプリケーションでは、ユーザー固有の情報を格納して使用します。ユーザーがサイトを訪問したときは、格納した情報を使用してユーザーに Web アプリケーションのパーソナル化されたバージョンを表示できます。アプリケーションをパーソナル化するには一連の要素が必要です。一意のユーザー ID を使用して情報を格納し、再訪問したときにユーザーを認識し、必要に応じてユーザーの情報をフェッチする必要があります。ASP.NET プロファイル機能を使用すると、これらのすべてのタスクを実行できるため、アプリケーションを簡略化できます。

ASP.NET プロファイル機能は、情報を個々のユーザーに関連付けて永続的な形式で格納します。ASP.NET プロファイルを使用すると、ユーザー情報を管理するために独自のデータベースを作成および保守する必要がありません。また、ASP.NET プロファイル機能では、アプリケーション内の任意の場所からアクセスできる厳密に型指定された API を使用してユーザー情報を利用できます。

プロファイルを使用すると、どのような型のオブジェクトでも格納できます。このプロファイル機能には、ほぼすべての型のデータを定義および保持しつつ、タイプ セーフな方法でデータを使用できる汎用ストレージ機能が用意されています。

ASP.NET プロファイルの動作のしくみ

プロファイルを使用するには、まず ASP.NET Web アプリケーションの構成ファイルを変更してプロファイルを有効にします。構成の一環として、プロファイル データの格納と取得を行う低レベルのタスクを実行する基本クラスであるプロファイル プロバイダも指定します。SQL Server にプロファイル データを格納する .NET Framework のプロファイル プロバイダを使用するか、または「プロファイル プロバイダの実装」に説明されているように、独自のプロファイル プロバイダを作成して使用します。選択したデータベースに接続する SqlProfileProvider のインスタンスを指定するか、またはローカルの Web サーバーにプロファイル データを格納する SqlProfileProvider の既定のインスタンスを使用します。

プロファイルの機能は、値を使用するプロパティの一覧を定義して構成します。たとえば、アプリケーションが天気予報などの地域固有情報を提供する場合は、ユーザーの郵便番号を格納します。その場合は、構成ファイルに PostalCode というプロファイル プロパティを定義します。構成ファイルの profile セクションは次のようになります。

<profile>
  <properties>
    <add name="PostalCode" />
  </properties>
</profile>

アプリケーションが実行されると、ASP.NET は ProfileBase クラスを継承し、動的に生成される ProfileCommon クラスを作成します。この動的な ProfileCommon クラスには、アプリケーションの構成で指定するプロファイル プロパティの定義から作成されたプロパティが含まれます。この動的な ProfileCommon クラスのインスタンスは、現在の HttpContextProfile プロパティの値に設定され、アプリケーションの各ページで使用できるようになります。

アプリケーションでは、格納する値を収集して、定義されているプロファイル プロパティに割り当てます。たとえば、アプリケーションのホームページにユーザーが郵便番号を入力するためのテキスト ボックスを作成します。次の例のように、ユーザーが郵便番号を入力したときに、現在のユーザーの値を格納するように Profile プロパティを設定します。

Profile.PostalCode = txtPostalCode.Text
Profile.PostalCode = txtPostalCode.Text;

Profile.PostalCode に値を設定すると、その値は自動的に現在のユーザーに対して格納されます。現在のユーザーを特定したり、明示的に値をデータベースに格納するためにコードを記述する必要はありません。これらのタスクはプロファイル機能が実行します。

値を使用する場合は、値を設定した場合とほとんど同じ方法で取得できます。GetWeatherInfo という架空の関数を呼び出し、プロファイルに格納されている現在のユーザーの郵便番号を渡すコード例を次に示します。

weatherInfo = GetWeatherInfo( Profile.PostalCode )
weatherInfo = GetWeatherInfo( Profile.PostalCode );

ユーザーを明示的に指定したり、データベースの検索を実行する必要はありません。プロファイルからプロパティ値を取得するだけで、ASP.NET は現在のユーザーを識別し、永続的なプロファイル ストアから値を探して必要なアクションを実行します。

参照

概念

ASP.NET プロファイル プロパティの概要

ASP.NET プロファイル プロパティのユーザー ID

ASP.NET プロファイル プロパティの定義

ASP.NET プロファイル プロバイダ