ProfileBase Конструктор

Определение

Создает экземпляр класса ProfileBase.Creates an instance of the ProfileBase class.

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

Исключения

Атрибут enabled раздела profile файла Web.config имеет значение false.The enabled attribute of the profile section of the Web.config file is false.

Не удалось создать тип свойства, заданный в разделе profile файла Web.config.A property type specified in the profile section of the Web.config file could not be created.

-или--or-

Атрибут allowAnonymous свойства в разделе profile файла Web.config имеет значение true, а атрибут enabled элемента <anonymousIdentification> имеет значение false.The allowAnonymous attribute for a property in the profile section of the Web.config file is set to true and the enabled attribute of the <anonymousIdentification> element is set to false.

-или--or-

Атрибут serializeAs свойства в разделе profile файла Web.config имеет значение Binary, а свойство IsSerializable заданного типа type возвращает false.The serializeAs attribute for a property in the profile section of the Web.config file is set to Binary and the IsSerializable property of the specified type returns false.

-или--or-

Имя поставщика, заданное с помощью атрибута provider свойства профиля не удалось найти в коллекции Providers.The name of a provider specified using the provider attribute of a profile property could not be found in the Providers collection.

-или--or-

Не удалось найти тип type, заданный для свойства профиля.The type specified for a profile property could not be found.

-или--or-

Свойство профиля было задано с именем, совпадающим с именем свойства базового класса, указанного в атрибуте inherits раздела profile.A profile property was specified with a name that matches a property name on the base class specified in the inherits attribute of the profile section.

Примеры

Следующий файл Web. config задает профиль пользователя, содержащий свойство ZipCode типа string и свойство RecentSearchList типа StringCollection.The following Web.config file specifies a user profile that contains a ZipCode property of type string and a RecentSearchList property of type StringCollection. Созданное свойство Profile текущего HttpContext будет иметь строго типизированные методы доступа для каждого из указанных свойств.The generated Profile property of the current HttpContext will have strongly typed accessors for each of the specified properties.

<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, указанное для профиля пользователя.The following ASP.NET page reads and sets the ZipCode property specified for the user profile.

Важно!

Этот пример содержит текстовое поле, которое принимает вводимые пользователем данные, что является потенциальной угрозой безопасности.This example contains a text box that accepts user input, which is a potential security threat. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.For more information, see Script Exploits Overview.

<%@ 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 uses the ProfileBase class to create the class used for the user profile. Когда запускается приложение с включенным профилем пользователя, ASP.NET создает новый класс типа ProfileCommon, который наследуется от класса ProfileBase.When an application that has the user profile enabled is started, ASP.NET creates a new class of type ProfileCommon, which inherits from the ProfileBase class. Строго типизированные методы доступа добавляются в класс ProfileCommon для каждого свойства, определенного в разделе конфигурации профиля .Strongly typed accessors are added to the ProfileCommon class for each property defined in the profile configuration section. Строго типизированные методы доступа класса ProfileCommon вызывают метод GetPropertyValue и SetPropertyValue базового класса ProfileBase для получения и задания значений свойств профиля соответственно.The strongly typed accessors of the ProfileCommon class call the GetPropertyValue and SetPropertyValue methods of the ProfileBase base class to retrieve and set profile property values, respectively. Экземпляр класса ProfileCommon задается как значение свойства Profile для приложения ASP.NET.An instance of the ProfileCommon class is set as the value of the Profile property for the ASP.NET application.

Примечание

Базовый класс, используемый для создания класса, хранящегося в свойстве Profile, можно переопределить с помощью атрибута inherits раздела Profile файла конфигурации.The base class used to generate the class stored in the Profile property can be overridden using the inherits attribute of the profile section of the configuration file. В этом случае необходимо указать пользовательский класс, наследующий от ProfileBase базового класса.In this case you would specify a custom class that inherits from the ProfileBase base class.

Этот конструктор не предназначен для использования из кода приложения.This constructor is not intended to be used from application code. Чтобы создать экземпляр профиля пользователя, используйте метод Create.To create an instance of a user profile, use the Create method.

Применяется к

Дополнительно