Compartir a través de


ProfileBase Constructor

Definición

Crea una instancia de la clase ProfileBase.

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

Excepciones

El atributo enabled de la sección profile del archivo Web.config es false.

No se pudo crear un tipo de propiedad especificado en la sección profile del archivo Web.config.

o bien

El valor del atributo allowAnonymous de una propiedad en la sección profile del archivo Web.config está establecido en true y el atributo enabled del elemento <anonymousIdentification> está establecido en false.

o bien

El valor del atributo serializeAs de una propiedad en la sección profile del archivo Web.config está establecido en Binary y la propiedad IsSerializable del valor type especificado devuelve false.

o bien

El nombre de un proveedor especificado utilizando el atributo provider de una propiedad de perfil no se pudo encontrar en la colección Providers.

o bien

No se pudo encontrar el type especificado para una propiedad de perfil.

o bien

Se especificó una propiedad de perfil con un nombre que coincide con un nombre de propiedad en la clase base especificada en el atributo inherits de la sección profile.

Ejemplos

El siguiente archivo Web.config especifica un perfil de usuario que contiene una ZipCode propiedad de tipo string y una RecentSearchList propiedad de tipo StringCollection. La propiedad generada Profile del actual HttpContext tendrá descriptores de acceso fuertemente tipados para cada una de las propiedades especificadas.

<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>

La página ASP.NET siguiente lee y establece la ZipCode propiedad especificada para el perfil de usuario.

Importante

Este ejemplo contiene un cuadro de texto que acepta la entrada del usuario, que es una amenaza de seguridad potencial. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script. Para más información, consulte Información general sobre los ataques mediante scripts.

<%@ 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>

Comentarios

ASP.NET usa la ProfileBase clase para crear la clase utilizada para el perfil de usuario. Cuando se inicia una aplicación que tiene habilitado el perfil de usuario, ASP.NET crea una nueva clase de tipo ProfileCommon, que hereda de la ProfileBase clase . Los descriptores de acceso fuertemente tipados se agregan a la ProfileCommon clase para cada propiedad definida en la sección de configuración del perfil . Los descriptores de acceso fuertemente tipados de la ProfileCommon clase llaman a los GetPropertyValue métodos y SetPropertyValue de la ProfileBase clase base para recuperar y establecer valores de propiedad de perfil, respectivamente. Una instancia de la ProfileCommon clase se establece como el valor de la Profile propiedad para la aplicación de ASP.NET.

Nota

La clase base utilizada para generar la clase almacenada en la Profile propiedad se puede invalidar mediante el inherits atributo de la sección de perfil del archivo de configuración. En este caso, especificaría una clase personalizada que hereda de la ProfileBase clase base.

Este constructor no está pensado para usarse desde el código de la aplicación. Para crear una instancia de un perfil de usuario, use el Create método .

Se aplica a

Consulte también