Compartir a través de


Tutorial: Mantener la información de usuarios de sitios Web con propiedades de perfil

Actualización: noviembre 2007

Las propiedades de ASP.NET Profile permiten a una aplicación efectuar el seguimiento y almacenar permanentemente información específica del usuario. Por ejemplo, los usuarios pueden especificar un código postal o su combinación de colores preferida, y esa información se puede almacenar y recuperar desde cualquier parte de la aplicación. ASP.NET hace coincidir automáticamente el usuario actual (ya sea un usuario anónimo o registrado) con la información personal que está almacenada en su cuenta de usuario.

Este tutorial muestra cómo agregar propiedades Profile a una aplicación y crear con ellas una experiencia personalizada para los visitantes del sitio Web.

Durante este tutorial aprenderá a hacer lo siguiente:

  • Configurar una aplicación para utilizar las propiedades Profile.

  • Definir propiedades Profile simples y complejas que desea mantener para los usuarios.

  • Establecer y recuperar los valores de Profile en su aplicación.

  • Utilizar propiedades Profile que tienen usuarios anónimos y registrados.

Requisitos previos

Para poder completar este tutorial, necesitará lo siguiente:

  • Microsoft Visual Web Developer.

  • Microsoft .NET Framework.

  • Microsoft SQL Server Standard Edition.

    La información de la propiedad Profile que crea en el tutorial se almacenará en una base de datos de SQL Server Standard Edition.

  • Las cookies habilitadas en su explorador.

    Nota:

    Las propiedades de ASP.NET Profile pueden funcionar sin cookies si la aplicación se configura para ello. Sin embargo, en este tutorial utilizará las opciones de configuración predeterminadas para las propiedades Profile, que utilizan cookies.

Crear y configurar el sitio Web

Si ya ha creado un sitio Web en Microsoft Visual Studio finalizando Tutorial: Crear una página Web básica en Visual Web Developer, puede utilizar ese sitio Web e ir a la sección siguiente. De lo contrario, cree un sitio Web nuevo siguiendo estos pasos.

Para crear un sitio Web del sistema de archivos

  1. Abra Visual Studio.

  2. En el menú Archivo, señale a Nuevo y, a continuación, haga clic en Sitio Web (o en el menú Archivo, haga clic en Nuevo sitio Web).

    Aparece el cuadro de diálogo Nuevo sitio Web.

  3. En Plantillas instaladas de Visual Studio, haga clic en Servicio Web ASP.NET.

  4. En la lista Ubicación situada más a la izquierda, haga clic en Sistema de archivos.

  5. En la lista Ubicación situada más a la derecha, escriba el nombre de la carpeta dónde desea guardar las páginas del sitio Web.

    Por ejemplo, escriba el nombre de carpeta C:\WebSites.

  6. En la lista Lenguaje, haga clic en el lenguaje de programación con el que prefiera trabajar.

  7. Haga clic en Aceptar.

    Visual Web Developer crea la carpeta y una nueva página denominada Default.aspx.

Configurar las propiedades Profile

Para poder trabajar con las propiedades Profile de ASP.NET, configurará la aplicación para habilitar y definir las propiedades Profile cuyo seguimiento desea realizar por cada usuario. Para empezar, creará una propiedad PostalCode única con la que el sitio Web realizará el seguimiento de los usuarios. También configurará la propiedad PostalCode para que su sitio pueda realizar el seguimiento de usuarios anónimos y registrados.

Trabajará primero como un usuario anónimo. En segundo plano, ASP.NET le asignará un identificador único, anónimo que se almacena en una cookie en el equipo. ASP.NET puede utilizar este identificador anónimo para establecer y obtener valores que son únicamente suyos.

Para configurar las propiedades Profile en el sitio Web

  1. En el Explorador de soluciones, determine si el sitio Web ya tiene un archivo Web.config.

    Si el sitio Web no tiene un archivo Web.config, siga estos pasos:

    1. Haga clic con el botón secundario del mouse en el nombre del sitio Web.

    2. Haga clic en Agregar nuevo elemento.

    3. En Plantillas instaladas de Visual Studio, haga clic en Archivo de configuración Web.

    4. Haga clic en Agregar.

      Un nuevo archivo denominado Web.config se agrega al sitio y se abre en el editor.

  2. Agregue el elemento <profile> siguiente al archivo Web.config como un elemento secundario de <system.web>:

    <system.web>
    
      <anonymousIdentification enabled="true" />  <profile>    <properties>      <add name="PostalCode"         type="System.String"         allowAnonymous="true" />    </properties>  </profile>
    
    <!-- other Web.config settings here -->
    </system.web>
    
    Nota:

    Los elementos del archivo Web.config distinguen entre mayúsculas y minúsculas. Por consiguiente, asegúrese de que copia o escribe los elementos exactamente como se indica.

    Ha agregado los elementos siguientes:

    • El elemento <anonymousIdentification>, que especifica si las propiedades Profile sólo funcionan con usuarios registrados (autenticados) o con usuarios registrados y anónimos.

      En este caso, ha establecido enabled en true. Por consiguiente, se realizará el seguimiento de información de la propiedad Profile para los usuarios registrados y los anónimos.

    • El elemento <properties>, que contiene todas las propiedades Profile que ha definido.

    • El elemento <add>, que define un nuevo elemento <profile>.

      En este caso, ha definido una propiedad Profile única denominada PostalCode.

      Cuando define una propiedad Profile, especifica su tipo de datos mediante un nombre de clase a la manera de .NET Framework. También especifica si se realizará el seguimiento de la propiedad Profile para los usuarios anónimos. Después de habilitar la identificación anónima, puede especificar además si realizar el seguimiento de las propiedades Profile individualmente para los usuarios anónimos.

      Crearía un nuevo elemento add para cada propiedad Profile adicional que deseara definir.

      Nota:

      De forma predeterminada, la información del perfil de usuario se almacena en una base de datos de SQL Server Standard Edition en el subdirectorio Application_Data del sitio Web. Este tutorial utiliza la configuración predeterminada. En las aplicaciones de producción que admiten un gran número de usuarios, es mejor almacenar los datos de las propiedades Profile en una base de datos de Microsoft SQL Server. Para obtener más información, vea "Pasos siguientes" más adelante en este tutorial.

Establecer y obtener la propiedad PostalCode

Después de configurar el sitio Web para realizar el seguimiento de una propiedad Profile, puede establecer y obtener la propiedad Profile como lo haría normalmente con propiedades de componentes. En esta sección, creará una página que muestra cómo establecer y obtener el valor de la propiedad PostalCode que definió en la sección anterior.

Para crear una página que establece y obtiene la propiedad PostalCode

  1. Agregue al sitio una nueva página Web denominada Profiles.aspx.

  2. Abra Profiles.aspx y cambie a la vista Diseño.

  3. En el grupo Estándar del Cuadro de herramientas, arrastre los controles enumerados en la tabla siguiente a la página y establezca las propiedades como se indica.

    Control

    Configuración de la propiedad

    TextBox

    ID = textPostalCode

    Button

    ID = SetPostalCode

    Text = Set Postal Code (Establecer código postal)

    Label

    ID = labelPostalCode

    Text = (vacío)

  4. Cambie a la vista Código fuente y, a continuación, agregue el atributo siguiente al botón SetPostalCode si el atributo no existe.

    OnClick="SetPostalCode_Click"
    
  5. Cree un controlador del evento Click para Set Postal Code (Establecer código postal) y, a continuación, agregue el código resaltado siguiente.

    Sub SetPostalCode_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text)    labelPostalCode.Text = Profile.PostalCode
    End Sub
    
    void SetPostalCode_Click(object sender, System.EventArgs e)
    {
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text);    labelPostalCode.Text = Profile.PostalCode;
    }
    

    Cuando se habilita el perfil de usuario, ASP.NET crea dinámicamente una propiedad denominada Profile que agrega el perfil de usuario al contexto actual. Las propiedades Profile individuales están a continuación disponibles a través de Profile.PostalCode.

  6. Cree un controlador del evento Page_Load y, a continuación, agregue el código resaltado siguiente.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
    End Sub
    
    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
    }
    

    Este código mostrará el valor de Profile.PostalCode cada vez que se solicite la página.

Probar la propiedad de perfil PostalCode

Ahora puede probar la propiedad PostalCode que definió en la sección anterior.

Nota:

Si está trabajando con un sitio Web existente que tiene habilitada la suscripción, asegúrese de que ha cerrado la sesión.

Para probar la propiedad PostalCode

  1. Presione CTRL+F5 para ejecutar la página Profiles.aspx.

    Nota:

    Si el explorador muestra un error 502 o un error que indica que la página no se puede mostrar, es posible que necesite configurar el explorador para que omita los servidores proxy en las solicitudes locales. Para obtener información detallada, vea Cómo: Omitir un servidor proxy para las solicitudes Web locales.

  2. En el cuadro, escriba un código postal y, a continuación, haga clic en Set Postal Code (Establecer código postal).

    El código postal que escribió aparece en el control Label.

  3. Cierre el explorador para cerrar la sesión actual.

  4. Vuelva a abrir el explorador y, a continuación, solicite la página Profiles.aspx.

    El código postal que escribió anteriormente aparece en el control Label.

El último paso del procedimiento anterior ilustra que ASP.NET almacena el valor de PostalCode. Cuando visita de nuevo la página, ASP.NET puede leer el valor de PostalCode basándose en su identificador anónimo único.

Definir propiedades complejas

En "Establecer y obtener la propiedad PostalCode", anteriormente en este tutorial, creó una propiedad simple denominada PostalCode que se almacenó como una cadena. En esta sección, definirá una propiedad denominada FavoriteURLs que es una colección. ASP.NET puede almacenar propiedades Profile de cualquier tipo, pero es necesario proporcionar información adicional cuando se está definiendo dicha propiedad Profile.

Para definir la propiedad FavoriteURLs

  1. Abra el archivo Web.config.

  2. Agregue el elemento resaltado siguiente al elemento profile que creó en la sección "Configurar las propiedades Profile", anteriormente en este tutorial:

    <anonymousIdentification enabled="true" />
      <profile>
        <properties>
        <add name="PostalCode" 
          type="System.String" 
          allowAnonymous="true" />
        <add name="FavoriteURLs"       type="System.Collections.Specialized.StringCollection"      allowAnonymous="true" />
        </properties>
      </profile>
    

    Ha agregado una nueva propiedad Profile denominada FavoriteURLs. En las propiedades Profile que no son tipos simples (como String o Integer), debe especificar el tipo completo. Aquí, está especificando que la propiedad Profile será una colección que contendrá cadenas.

  3. Guarde y cierre el archivo Web.config.

Establecer y obtener la propiedad FavoriteURLs

Trabajar con la propiedad FavoriteURLs, que es una colección, es muy similar a trabajar con una colección en cualquier contexto. En esta parte del tutorial, actualizará la página Profiles.aspx que creó en la sección "Establecer y obtener la propiedad PostalCode", anteriormente en este tutorial, y agregará un control TextBox en el que los usuarios pueden escribir una dirección URL. Cuando el usuario hace clic en Agregar, la dirección URL se agrega a la propiedad FavoriteURLs. También mostrará la lista actual de direcciones URL favoritas en un cuadro de lista desplegable.

Para establecer y obtener la propiedad FavoriteURLs

  1. En la página Profiles.aspx, agregue los controles siguientes y establezca sus propiedades como se indica en la tabla siguiente.

    Control

    Configuración de la propiedad

    TextBox

    ID = textFavoriteURL

    Button

    ID = AddURL

    Text = Add URL (Agregar dirección URL)

    ListBox

    ID = listFavoriteURLs

  2. Cambie a la vista Código fuente y, a continuación, agregue el atributo siguiente al botón Add URL (Agregar dirección URL) si el atributo no existe.

    OnClick="AddURL_Click"
    
  3. Cree un controlador del evento Click para Add URL (Agregar dirección URL) y, a continuación, agregue el código resaltado siguiente.

    Sub AddURL_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Dim urlString As String = _        Server.HtmlEncode(textFavoriteURL.Text)
        If Profile.FavoriteURLs Is Nothing Then
            Profile.FavoriteURLs = New _
                System.Collections.Specialized.StringCollection
        End If
        Profile.FavoriteURLs.Add(urlString)    DisplayFavoriteURLs()
    End Sub
    
    void AddURL_Click(object sender, System.EventArgs e)
    {    
        String urlString = Server.HtmlEncode(textFavoriteURL.Text);
        if(Profile.FavoriteURLs == null)
        {
            Profile.FavoriteURLs = new 
                System.Collections.Specialized.StringCollection();
        }
        Profile.FavoriteURLs.Add(urlString);    DisplayFavoriteURLs();
    }
    
  4. En el controlador del evento Page_Load, agregue la siguiente línea de código.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
        DisplayFavoriteURLs()
    End Sub
    
    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
        DisplayFavoriteURLs();
    }
    
  5. Agregue la subrutina siguiente para actualizar la presentación de las direcciones URL en el control ListBox.

    Sub DisplayFavoriteURLs()
        listFavoriteURLs.DataSource = Profile.FavoriteURLs
        listFavoriteURLs.DataBind()
    End Sub
    
    void DisplayFavoriteURLs()
    {    
        listFavoriteURLs.DataSource = Profile.FavoriteURLs;
        listFavoriteURLs.DataBind();
    }
    

Probar la propiedad de perfil FavoriteURLs

Ya puede probar la propiedad FavoriteURLs.

Para probar la propiedad FavoriteURLs

  1. Para ejecutar la página Profiles.aspx, presione CTRL+F5.

    Al principio no hay ningún valor en el control ListBox.

  2. En el cuadro, escriba una dirección URL y, a continuación, haga clic en Agregar.

    La dirección URL se agrega al control ListBox.

  3. Repita el paso anterior para agregar otra dirección URL.

  4. Cierre el explorador.

  5. Vuelva a abrir el explorador y, a continuación, abra la página Profiles.aspx.

    Observe que el control ListBox se rellena con las direcciones URL que escribió antes de cerrar el explorador.

Migrar las propiedades Profile durante el inicio de sesión

Si un usuario visita por primera vez el sitio de forma anónima pero después se registra, quizás desee conservar los valores de las propiedades que el usuario estableció cuando era anónimo. Un ejemplo típico es un sitio de ventas en el que el usuario puede examinar artículos y agregarlos a un carro de la compra de forma anónima pero después inicia una sesión y paga sus compras. Para conservar los valores del usuario cuando inicia sesión, puede migrar el usuario del perfil anónimo actual al perfil que tenga como usuario registrado (autenticado).

En esta sección, migrará el valor de la propiedad PostalCode del usuario. El sitio Web debe estar configurado para utilizar identidades de usuario y tener una página de inicio de sesión. Si el sitio Web con el que está trabajando aún no se ha configurado para la suscripción, utilice el procedimiento siguiente para habilitarla. Si el sitio ya admite la suscripción, puede ir a la sección siguiente.

Para configurar el sitio Web para la suscripción

  1. En Visual Studio, en el menú Sitio Web, haga clic en Configuración de ASP.NET.

    Aparece la herramienta Administración de sitios Web.

  2. Haga clic en la ficha Seguridad.

  3. Haga clic en Seguridad y, a continuación, bajo Usuarios, haga clic en Seleccionar tipo de autenticación.

  4. Seleccione Desde Internet y, a continuación, haga clic en Listo.

    La opción Desde Internet especifica que la aplicación utilizará la autenticación de formularios, en la que los usuarios se registran mediante una página de inicio de sesión.

  5. En la ficha Seguridad, en Usuarios, haga clic en Crear usuario y, a continuación, cree una cuenta de usuario.

    Puede utilizar cualquier nombre y contraseña, pero asegúrese de recordarlos. Como dirección de correo electrónico, utilice la suya propia. (En este tutorial no va a enviar mensajes de correo electrónico.)

  6. Después de finalizar la definición de la cuenta de usuario, cierre la herramienta Administración de sitios Web.

  7. Arrastre un control Login y un control LoginName desde el grupo Inicio de sesión del Cuadro de herramientas hasta la página.

    El control LoginName no se requiere para el inicio de sesión, pero le ayudará a ver que se ha registrado.

Crear un controlador de la migración

Para migrar la configuración de un usuario anónimo a la configuración de un usuario registrado, tiene que realizar la migración cuando la identidad del usuario está cambiando. ASP.NET proporciona el evento MigrateAnonymous exactamente para este propósito; en el controlador del evento MigrateAnonymous, puede transferir los valores de configuración que desee conservar.

Para crear un controlador de migración

  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nombre del sitio Web y, a continuación, seleccione Agregar nuevo elemento.

  2. En Plantillas instaladas de Visual Studio, haga clic en Clase de aplicación global y, a continuación, haga clic en Agregar.

    No tiene que escribir un nombre porque el archivo siempre se denomina Global.asax.

  3. Escriba el código siguiente para crear un nuevo controlador para el evento MigrateAnonymous.

    Sub Profile_MigrateAnonymous(ByVal sender As Object, _
        ByVal e As ProfileMigrateEventArgs)
        If Profile.GetProfile(e.AnonymousID).PostalCode <> "" Then
            Profile.PostalCode = _
                Profile.GetProfile(e.AnonymousID).PostalCode
        End If
    End Sub
    
    void Profile_MigrateAnonymous(Object sender, 
            ProfileMigrateEventArgs e)
    {
        if(Profile.GetProfile(e.AnonymousID).PostalCode != String.Empty)
        {
            Profile.PostalCode = 
                Profile.GetProfile(e.AnonymousID).PostalCode;
        }
    }
    

    El código obtiene el perfil del usuario anónimo y extrae el valor de la propiedad PostalCode. A continuación, obtiene el perfil de la nueva identidad del usuario y establece el valor equivalente para esa identidad.

Probar la migración

Para probar la migración, en primer lugar elegirá algunas opciones como usuario anónimo. A continuación, iniciará sesión y verá que se conservan los valores.

Para probar la migración

  1. Abra la página Profiles.aspx y, a continuación, presione CTRL+F5 para ejecutarla.

    El control LoginName no muestra nada porque no ha iniciado sesión todavía.

  2. Si no se muestra un código postal en la página, escriba un nuevo código postal y, a continuación, haga clic en Set Postal Code (Establecer código postal).

    El código postal de su identidad anónima actual se muestra en la página.

  3. Inicie sesión utilizando el nombre de usuario y contraseña que creó en la sección "Migrar las propiedades Profile durante el inicio de sesión", anteriormente en este tutorial.

    El control LoginName presenta su nombre de usuario. El código postal que escribió como usuario anónimo sigue mostrándose porque se ha migrado al perfil de usuario registrado.

Pasos siguientes

Este tutorial ha mostrado los procedimientos básicos para configurar y utilizar las propiedades Profile en aplicaciones Web. Puede utilizar las propiedades Profile para muchos propósitos en sus aplicaciones. La lista siguiente sugiere áreas adicionales en las que puede ser conveniente trabajar con propiedades Profile:

Vea también

Conceptos

Información general sobre las propiedades de perfil de ASP.NET

Proveedores de perfiles de ASP.NET