次の方法で共有


ProfileBase コンストラクター

定義

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

public:
 ProfileBase();
public ProfileBase();
Public Sub New ()

例外

Web.config ファイルのプロファイル セクションのenabled属性がfalse

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

-又は-

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

-又は-

Web.config ファイルのプロファイル セクションのプロパティのserializeAs属性は Binary に設定され、指定したtypeIsSerializableプロパティはfalseを返します。

-又は-

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

-又は-

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

-又は-

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

次の Web.config ファイルは、string型のZipCode プロパティとStringCollection型のRecentSearchList プロパティを含むユーザー プロファイルを指定します。 現在の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 プロパティを読み取って設定します。

Important

この例には、潜在的なセキュリティ上の脅威であるユーザー入力を受け入れるテキスト ボックスが含まれています。 既定では、ASP.NET Web ページでは、ユーザー入力にスクリプトや HTML 要素が含まれていないことが検証されます。 詳細については、「スクリプトの 悪用の概要」を参照してください。

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" 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="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" 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>

注釈

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

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

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

適用対象

こちらもご覧ください