ProfileBaseとは? わかりやすく解説

ProfileBase クラス

メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。

プロファイルのプロパティ値と情報への型指定しないアクセスを提供します。

名前空間: System.Web.Profile
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Class ProfileBase
    Inherits SettingsBase
public class ProfileBase : SettingsBase
public ref class ProfileBase : public
 SettingsBase
public class ProfileBase extends SettingsBase
public class ProfileBase extends
 SettingsBase
解説解説

ASP.NET では、ProfileBase クラスを使用して、ユーザー プロファイルに対して使用されるクラスを作成します。ユーザー プロファイルが有効にされたアプリケーションを起動すると、ASP.NET によって、ProfileBase クラスを継承する ProfileCommon 型の新しいクラスが作成されます。profile 構成セクションに定義されているそれぞれのプロパティに対して、厳密に型指定されたアクセサが ProfileCommon クラスに追加されます。ProfileCommon クラスの厳密に型指定されたアクセサは、ProfileBase 基本クラスの GetPropertyValue メソッドおよび SetPropertyValue メソッドを呼び出して、プロファイルのプロパティ値の取得および設定をそれぞれ行います。ProfileCommon クラスのインスタンスは、ASP.NET アプリケーションの Profile プロパティ値として設定されます。

ASP.NET アプリケーションでユーザー プロファイルのインスタンスを作成するには、Create メソッドの使用をお勧めします。

継承時の注意 カスタムのプロファイル実装は、ProfileBase 抽象クラスを継承し、profile 構成要素で指定されないプロパティをユーザー プロファイルに定義することで作成できます。ユーザー プロファイルのカスタム型を Web.config ファイル内で指定するには、次の例に示すように、profile 構成要素の inherits 属性を使用します。EmployeeProfile クラスのコードは、このトピックの「使用例」にあります。

<profile inherits="Samples.AspNet.Profile.EmployeeProfile"
  defaultProvider="SqlProvider">
  <providers>
    <clear />
    <add
      name="SqlProvider"
      type="System.Web.Profile.SqlProfileProvider" 
      connectionStringName="SqlServices" 
      description="SQL Profile Provider for Sample"/> 
    <add
      name="EmployeeInfoProvider"
      type="System.Web.Profile.SqlProfileProvider" 
      connectionStringName="SqlServices" 
      description="SQL Profile Provider for Employee Info"/> 
  </providers>

  <properties>
    <add name="GarmentSize" />
  </properties>
</profile>
使用例使用例

string 型の ZipCode プロパティおよび StringCollection 型の RecentSearchList プロパティを含んだユーザー プロファイルを指定する Web.config のコード例を次に示します。生成される現在の HttpContext の Profile プロパティは、指定されている各プロパティに対して、厳密に型指定されたアクセサを持ちます。

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString=
      "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=aspnetdb;"
 />
  </connectionStrings>

  <system.web>
    <anonymousIdentification enabled="true" />

    <profile enabled="true" defaultProvider="SqlProvider" >
      <providers>
        <add
          name="SqlProvider"
          connectionStringName="SqlServices"
          applicationName="ProfileBaseApplication"
          type="System.Web.Profile.SqlProfileProvider" />
      </providers>

      <properties>
        <add name="ZipCode" allowAnonymous="true" />
        <add name="RecentSearchList"
          type="System.Collections.Specialized.StringCollection"
          serializeAs="Xml"
          allowAnonymous="true" />
      </properties>
    </profile>
  </system.web>
</configuration>

ユーザー プロファイルに対して、指定された ZipCode プロパティを読み込んだり、設定したりする ASP.NET ページのコード例を次に示します。

<%@ Page Language="VB" %>
<script runat="server">

Public Sub Page_PreRender()

  If Profile.ZipCode = Nothing Then
    PersonalizePanel.Visible = False
    GetZipCodePanel.Visible = True
  Else
    ZipCodeLabel.Text = Profile.ZipCode

    ' Get personalized information for zip code here.

    PersonalizePanel.Visible = True
    GetZipCodePanel.Visible = False
  End If

End Sub

Public Sub ChangeZipCode_OnClick(sender As
 Object, args As EventArgs)
  ZipCodeTextBox.Text = Profile.ZipCode
  Profile.ZipCode = Nothing

  PersonalizePanel.Visible = False
  GetZipCodePanel.Visible = True
End Sub

Public Sub EnterZipCode_OnClick(sender As
 Object, args As EventArgs)
  Profile.ZipCode = ZipCodeTextBox.Text
End Sub

</script>
<html>
<head>
<title>Home Page</title>
</head>
<body>

<form runat="server">
  <table border=1 cellpadding=2 cellspacing=2>
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server"
 Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel"
 Runat="Server" /><BR>
          <!-- Information for Zip Code here. -->
          <BR>
          <asp:LinkButton id="ChangeZipCodeButton"
 Runat="Server" Text="Change Your
 Zip Code"
                          OnClick="ChangeZipCode_OnClick"
 />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server"
 Visible="False">
          You can personalize this page by entering your Zip Code: 
          <asp:TextBox id="ZipCodeTextBox" Columns=5
 MaxLength=5 runat="Server" />
          <asp:LinkButton id="EnterZipCodeButton"
 Runat="Server" Text="Go"
                          OnClick="EnterZipCode_OnClick"
 />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="C#" %>
<script runat="server">

public void Page_PreRender()
{
  if (Profile.ZipCode == null)
  {
    PersonalizePanel.Visible = false;
    GetZipCodePanel.Visible = true;
  }
  else
  {
    ZipCodeLabel.Text = Profile.ZipCode;

    // Get personalized information for zip code here.

    PersonalizePanel.Visible = true;
    GetZipCodePanel.Visible = false;
  }
}

public void ChangeZipCode_OnClick(object sender,
 EventArgs args)
{
  ZipCodeTextBox.Text = Profile.ZipCode;
  Profile.ZipCode = null;

  PersonalizePanel.Visible = false;
  GetZipCodePanel.Visible = true;
}

public void EnterZipCode_OnClick(object sender,
 EventArgs args)
{
  Profile.ZipCode = ZipCodeTextBox.Text;
}

</script>
<html>
<head>
<title>Home Page</title>
</head>
<body>

<form runat="server">
  <table border=1 cellpadding=2 cellspacing=2>
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server" Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel"
 Runat="Server" /><BR>
          <!-- Information for Zip Code here. -->
          <BR>
          <asp:LinkButton id="ChangeZipCodeButton" Runat="Server"
 Text="Change Your Zip Code"
                          OnClick="ChangeZipCode_OnClick" />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server" Visible="False">
          You can personalize this page by entering your Zip Code:
 
          <asp:TextBox id="ZipCodeTextBox" Columns=5 MaxLength=5 runat="Server"
 />
          <asp:LinkButton id="EnterZipCodeButton" Runat="Server"
 Text="Go"
                          OnClick="EnterZipCode_OnClick" />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>

ProfileBase クラスから継承するクラスを定義して、カスタム プロファイルを作成するコード例を次に示します。カスタム プロファイルの型は、アプリケーションの Web.config ファイルにある profile 構成要素の inherits 属性を使用して指定します。

Imports System
Imports System.Web.Profile

Namespace Samples.AspNet.Profile

  Public Class EmployeeProfile
    Inherits ProfileBase

    <SettingsAllowAnonymous(False)> _
    <ProfileProvider("EmployeeInfoProvider")>
 _
    Public Property Department As
 String
      Get
        Return MyBase.Item("EmployeeDepartment").ToString()
      End Get
      Set
        MyBase.Item("EmployeeDepartment")
 = value
      End Set
    End Property

    <SettingsAllowAnonymous(False)> _
    <ProfileProvider("EmployeeInfoProvider")>
 _
    Public Property Details As
 EmployeeInfo
      Get
        Return CType(MyBase.Item("EmployeeInfo"),
 EmployeeInfo)
      End Get
      Set
        MyBase.Item("EmployeeInfo")
 = value
      End Set
    End Property
  End Class

  Public Class EmployeeInfo
    Public Name As String
    Public Address As String
    Public Phone As String
    Public EmergencyContactName As String
    Public EmergencyContactAddress As String
    Public EmergencyContactPhone As String
  End Class

End Namespace
using System;
using System.Web.Profile;

namespace Samples.AspNet.Profile
{
  public class EmployeeProfile : ProfileBase
  {
    [SettingsAllowAnonymous(false)]
    [ProfileProvider("EmployeeInfoProvider")]
    public string Department
    {
      get { return base["EmployeeDepartment"].ToString();
 }
      set { base["EmployeeDepartment"]
 = value; }
    }

    [SettingsAllowAnonymous(false)]
    [ProfileProvider("EmployeeInfoProvider")]
    public EmployeeInfo Details
    {
      get { return (EmployeeInfo)base["EmployeeInfo"];
 }
      set { base["EmployeeInfo"]
 = value; }
    }

  }

  public class EmployeeInfo
  {
    public string Name;
    public string Address;
    public string Phone;
    public string EmergencyContactName;
    public string EmergencyContactAddress;
    public string EmergencyContactPhone;
  }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
継承階層継承階層
System.Object
   System.Configuration.SettingsBase
    System.Web.Profile.ProfileBase
       System.Web.Profile.DefaultProfile
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ProfileBase コンストラクタ

メモ : このコンストラクタは、.NET Framework version 2.0 で新しく追加されたものです。

ProfileBase クラスのインスタンスを作成します。

名前空間: System.Web.Profile
アセンブリ: System.Web (system.web.dll 内)
構文構文

public ProfileBase ()
public:
ProfileBase ()
public ProfileBase ()
例外例外
例外の種類条件

System.Configuration.Provider.ProviderException

Web.config ファイルの profile セクションの enabled 属性が false です。

System.Configuration.ConfigurationErrorsException

Web.config ファイルの profile セクションで指定されたプロパティの型を作成できませんでした。

または

Web.config ファイルの profile セクションで、いずれかのプロパティの allowAnonymous 属性が true に設定され、<anonymousIdentification> 要素の enabled 属性が false に設定されています。

または

Web.config ファイルの profile セクションで、いずれかのプロパティの serializeAs 属性が Binary に設定され、指定された type の IsSerializable プロパティが false を返します。

または

プロファイル プロパティの provider 属性を使用して指定されたプロバイダの名前が、Providers コレクションに見つかりませんでした。

または

プロファイル プロパティに対して指定された type が見つかりませんでした。

または

プロファイルのプロパティが、profile セクションの inherits 属性で指定された基本クラスのプロパティ名と一致する名前で指定されています。

解説解説

ASP.NET では、ProfileBase クラスを使用して、ユーザー プロファイルに対して使用されるクラスを作成します。ユーザー プロファイルが有効にされたアプリケーションを起動すると、ASP.NET によって、ProfileBase クラスを継承する ProfileCommon 型の新しいクラスが作成されます。profile 構成セクションに定義されているそれぞれのプロパティに対して、厳密に型指定されたアクセサが ProfileCommon クラスに追加されます。ProfileCommon クラスの厳密に型指定されたアクセサは、ProfileBase 基本クラスの GetPropertyValue メソッドおよび SetPropertyValue メソッドを呼び出して、プロファイルのプロパティ値の取得および設定をそれぞれ行います。ProfileCommon クラスのインスタンスは、ASP.NET アプリケーションの Profile プロパティ値として設定されます。

メモメモ

Profile プロパティに格納されるクラスの生成に使用される基本クラスは、構成ファイルの profile セクションの inherits 属性を使用してオーバー ライドできます。この場合、ProfileBase 基本クラスから継承するカスタム クラスを指定します。

このコンストラクタは、アプリケーション コードで使用するためのものではありません。ユーザー プロファイルのインスタンスを作成するには、Create メソッドを使用します。

使用例使用例

string 型の ZipCode プロパティおよび StringCollection 型の RecentSearchList プロパティを含んだユーザー プロファイルを指定する Web.config の例を次に示します。生成される現在の HttpContext の Profile プロパティは、指定されている各プロパティに対して、厳密に型指定されたアクセサを持ちます。

<configuration>
   <connectionStrings>
       <add name="SqlServices" connectionString="Data Source=localhost;Integrated
 Security=SSPI;Initial Catalog=aspnetdb;" />
   </connectionStrings>

  <system.web>
   <anonymousIdentification enabled="true" />

   <profile defaultProvider="SqlProvider" >
     <providers>
       <add
         name="SqlProvider"
         connectionStringName="SqlServices"
         applicationName="ProfileBaseApplication"
         type="System.Web.Profile.SqlProfileProvider" />
     </providers>

     <properties>
       <add name="ZipCode" allowAnonymous="true" />
       <add name="RecentSearchList"
            type="System.Collections.Specialized.StringCollection"
            serializeAs="Xml"
            allowAnonymous="true" />
      </properties>
    </profile>
   </system.web>
</configuration>

次の ASP.NET ページでは、ユーザー プロファイルに対して指定された ZipCode プロパティを読み込んだり、設定したりします。

<%@ Page Language="VB" %>
<script runat="server">

Public Sub Page_PreRender()

  If Profile.ZipCode = Nothing Then
    PersonalizePanel.Visible = False
    GetZipCodePanel.Visible = True
  Else
    ZipCodeLabel.Text = Profile.ZipCode

    ' Get personalized information for zip code here.

    PersonalizePanel.Visible = True
    GetZipCodePanel.Visible = False
  End If

End Sub

Public Sub ChangeZipCode_OnClick(sender As
 Object, args As EventArgs)
  ZipCodeTextBox.Text = Profile.ZipCode
  Profile.ZipCode = Nothing

  PersonalizePanel.Visible = False
  GetZipCodePanel.Visible = True
End Sub

Public Sub EnterZipCode_OnClick(sender As
 Object, args As EventArgs)
  Profile.ZipCode = ZipCodeTextBox.Text
End Sub

</script>
<html>
<head>
<title>Home Page</title>
</head>
<body>

<form runat="server">
  <table border=1 cellpadding=2 cellspacing=2>
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server"
 Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel"
 Runat="Server" /><BR>
          <!-- Information for Zip Code here. -->
          <BR>
          <asp:LinkButton id="ChangeZipCodeButton"
 Runat="Server" Text="Change Your
 Zip Code"
                          OnClick="ChangeZipCode_OnClick"
 />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server"
 Visible="False">
          You can personalize this page by entering your Zip Code: 
          <asp:TextBox id="ZipCodeTextBox" Columns=5
 MaxLength=5 runat="Server" />
          <asp:LinkButton id="EnterZipCodeButton"
 Runat="Server" Text="Go"
                          OnClick="EnterZipCode_OnClick"
 />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="C#" %>
<script runat="server">

public void Page_PreRender()
{
  if (Profile.ZipCode == null)
  {
    PersonalizePanel.Visible = false;
    GetZipCodePanel.Visible = true;
  }
  else
  {
    ZipCodeLabel.Text = Profile.ZipCode;

    // Get personalized information for zip code here.

    PersonalizePanel.Visible = true;
    GetZipCodePanel.Visible = false;
  }
}

public void ChangeZipCode_OnClick(object sender,
 EventArgs args)
{
  ZipCodeTextBox.Text = Profile.ZipCode;
  Profile.ZipCode = null;

  PersonalizePanel.Visible = false;
  GetZipCodePanel.Visible = true;
}

public void EnterZipCode_OnClick(object sender,
 EventArgs args)
{
  Profile.ZipCode = ZipCodeTextBox.Text;
}

</script>
<html>
<head>
<title>Home Page</title>
</head>
<body>

<form runat="server">
  <table border=1 cellpadding=2 cellspacing=2>
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server" Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel"
 Runat="Server" /><BR>
          <!-- Information for Zip Code here. -->
          <BR>
          <asp:LinkButton id="ChangeZipCodeButton" Runat="Server"
 Text="Change Your Zip Code"
                          OnClick="ChangeZipCode_OnClick" />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server" Visible="False">
          You can personalize this page by entering your Zip Code:
 
          <asp:TextBox id="ZipCodeTextBox" Columns=5 MaxLength=5 runat="Server"
 />
          <asp:LinkButton id="EnterZipCodeButton" Runat="Server"
 Text="Go"
                          OnClick="EnterZipCode_OnClick" />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ProfileBase プロパティ


ProfileBase メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Create オーバーロードされます。 ユーザー プロファイルのインスタンスを作成します。
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetProfileGroup 指定されたグループ名のプロパティ グループを取得します。
パブリック メソッド GetPropertyValue プロファイル プロパティの値を取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド Initialize オーバーロードされます。 現在のユーザーに関するプロファイルのプロパティ値と情報を初期化します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド Save オーバーライドされます。 プロファイルのデータ ソースを、変更されたプロファイル プロパティ値で更新します。
パブリック メソッド SetPropertyValue プロファイル プロパティの値を設定します。
パブリック メソッド Synchronized  同期されている (スレッド セーフな) SettingsBase クラスを提供します。 ( SettingsBase から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ProfileBase クラス
System.Web.Profile 名前空間

その他の技術情報

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

ProfileBase メンバ

プロファイルのプロパティ値と情報への型指定しないアクセスを提供します。

ProfileBase データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド ProfileBase ProfileBase クラスのインスタンスを作成します。
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Create オーバーロードされます。 ユーザー プロファイルのインスタンスを作成します。
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetProfileGroup 指定されたグループ名のプロパティ グループを取得します。
パブリック メソッド GetPropertyValue プロファイル プロパティの値を取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド Initialize オーバーロードされます。 現在のユーザーに関するプロファイルのプロパティ値と情報を初期化します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド Save オーバーライドされます。 プロファイルのデータ ソースを、変更されたプロファイル プロパティ値で更新します。
パブリック メソッド SetPropertyValue プロファイル プロパティの値を設定します。
パブリック メソッド Synchronized  同期されている (スレッド セーフな) SettingsBase クラスを提供します。 (SettingsBase から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ProfileBase クラス
System.Web.Profile 名前空間

その他の技術情報

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



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ProfileBase」の関連用語

ProfileBaseのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ProfileBaseのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS