Ler en inglés

Compartir por


ProfileManager Clase

Definición

Administra la configuración y los datos del perfil de usuario.

C#
public static class ProfileManager
Herencia
ProfileManager

Ejemplos

En el ejemplo de código siguiente se muestra una página de ASP.NET que usa la ProfileManager clase para administrar perfiles inactivos.

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.

ASP.NET (C#)
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Profile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

int pageSize = 5;
int totalProfiles;
int totalPages;
int currentPage = 1;

ProfileAuthenticationOption authOption;
int inactiveDays = 120;
int deletedProfiles = 0;

public void Page_Load()
{
  DeletedMessage.Text = "";

  authOption = GetAuthenticationOption();

  if (!IsPostBack)
  {
    InactiveDaysTextBox.Text = inactiveDays.ToString();

    GetProfiles();
  }
  else
  {
    inactiveDays = Convert.ToInt32(InactiveDaysTextBox.Text);
  }
}

public void ProfileGrid_Delete(object sender, GridViewCommandEventArgs args)
{
  // Retrieve user name selected.

  int index = Convert.ToInt32(args.CommandArgument);

  string username = ProfileGrid.Rows[index].Cells[0].Text;

  ProfileManager.DeleteProfiles(new string[] {username});

  DeletedMessage.Text = "1 profile deleted.";

  // Refresh profile list.

  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  GetProfiles();
}


private void GetProfiles()
{
  ProfileGrid.DataSource = ProfileManager.GetAllInactiveProfiles(authOption,
                               DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)),
                               currentPage - 1, pageSize, out totalProfiles);

  TotalProfilesLabel.Text = totalProfiles.ToString();

  totalPages = ((totalProfiles - 1) / pageSize) + 1;

  // Ensure that we do not navigate past the last page of Profiles.

  if (currentPage > totalPages)
  {
    currentPage = totalPages;
    GetProfiles();
    return;
  }

  ProfileGrid.DataBind();
  CurrentPageLabel.Text = currentPage.ToString();
  TotalPagesLabel.Text = totalPages.ToString();

  if (currentPage == totalPages)
    NextButton.Visible = false;
  else
    NextButton.Visible = true;

  if (currentPage == 1)
    PreviousButton.Visible = false;
  else
    PreviousButton.Visible = true;

  if (totalProfiles <= 0)
    NavigationPanel.Visible = false;
  else
    NavigationPanel.Visible = true;
}

public void NextButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage++;
  GetProfiles();
}

public void PreviousButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage--;
  GetProfiles();
}

public void ModifyInactiveDaysButton_OnClick(object sender, EventArgs args)
{
  GetProfiles();
}

public void AuthenticationOptionListBox_OnSelectedIndexChanged(object sender, EventArgs args)
{
  authOption = GetAuthenticationOption();
  GetProfiles();
}

private ProfileAuthenticationOption GetAuthenticationOption()
{
  if (AuthenticationOptionListBox.SelectedItem != null)
  {
    switch (AuthenticationOptionListBox.SelectedItem.Value)
    {
      case "Anonymous":
        return ProfileAuthenticationOption.Anonymous;
        break;
      case "Authenticated":
        return ProfileAuthenticationOption.Authenticated;
        break;
      default:
        return ProfileAuthenticationOption.All;
        break;
    }
  }

  return ProfileAuthenticationOption.All;
}

public void DeleteAllInactiveButton_OnClick(object sender, EventArgs args)
{
  deletedProfiles = ProfileManager.DeleteInactiveProfiles(authOption, 
                        DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0 ,0)));
  DeletedMessage.Text = deletedProfiles.ToString() + " profiles deleted.";
  GetProfiles();
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Profiles</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Profile List</h3>

  <table border="0" cellpadding="3" cellspacing="3">
    <tr>
      <td valign="top">Authentication Option</td>
      <td valign="top"><asp:ListBox id="AuthenticationOptionListBox" rows="3" runat="Server"
                                    AutoPostBack="true"
                                    OnSelectedIndexChanged="AuthenticationOptionListBox_OnSelectedIndexChanged">
                         <asp:ListItem value="All" selected="True">All</asp:ListItem>
                         <asp:ListItem value="Authenticated">Authenticated</asp:ListItem>
                         <asp:ListItem value="Anonymous">Anonymous</asp:ListItem>
                       </asp:ListBox>
      </td>
    </tr>
    <tr>
      <td valign="top" style="width:160">
        Number of Days for Profile to be considered "inactive"</td>
      <td valign="top" style="width:200">
        <asp:TextBox id="InactiveDaysTextBox" runat="Server" MaxLength="3" Columns="3" />
        <asp:Button id="ModifyInactiveDaysButton" runat="server" Text="Refresh Results" 
           OnClick="ModifyInactiveDaysButton_OnClick" /><br />
        <asp:Button id="DeleteAllInactiveButton" runat="Server"
           Text="Delete All Inactive Profiles" OnClick="DeleteAllInactiveButton_OnClick" />
      </td>
      <td valign="top">
        <asp:RequiredFieldValidator id="InactiveDaysRequiredValidator" runat="server"
           ControlToValidate="InactiveDaysTextBox" ForeColor="red"
           Display="Static" ErrorMessage="Required" />
        <asp:RegularExpressionValidator id="InactiveDaysValidator" runat="server"
           ControlToValidate="InactiveDaysTextBox" ForeColor="red"
           Display="Static" ValidationExpression="[0-9]*" 
           ErrorMessage="Inactive Days must be a whole number less than 1000 (e.g. 30, 120)" />
     </td>
    </tr>
    <tr>
      <td><asp:Label id="DeletedMessage" runat="server" /></td>
      <td><asp:Label id="TotalProfilesLabel" runat="server" /> inactive profiles found.</td>
    </tr>
  </table>

    <asp:Panel id="NavigationPanel" Visible="false" runat="server">
    <table border="0" cellpadding="3" cellspacing="3">
      <tr>
        <td style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
            of <asp:Label id="TotalPagesLabel" runat="server" /></td>
        <td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
                            OnClick="PreviousButton_OnClick" runat="server" /></td>
        <td style="width:60"><asp:LinkButton id="NextButton" Text="Next >"
                            OnClick="NextButton_OnClick" runat="server" /></td>
      </tr>
    </table>
  </asp:Panel>

  <asp:GridView id="ProfileGrid" runat="server" AutoGenerateColumns="false"
                OnRowCommand="ProfileGrid_Delete"
                CellPadding="2" CellSpacing="1" Gridlines="None">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
    <Columns>
      <asp:BoundField HeaderText="User Name" DataField="Username" />
      <asp:BoundField HeaderText="Is Anonymous" DataField="IsAnonymous" />
      <asp:BoundField HeaderText="Last Updated" DataField="LastUpdatedDate" />
      <asp:BoundField HeaderText="Last Activity" DataField="LastActivityDate" />
      <asp:ButtonField HeaderText="Action" Text="Delete" ButtonType="Link" />
    </Columns>
  </asp:GridView>

</form>

</body>
</html>

Comentarios

El perfil de ASP.NET se usa para almacenar y recuperar la configuración del usuario en un origen de datos, como una base de datos. Se tiene acceso al perfil de usuario mediante la Profile propiedad del actual HttpContext. La información del perfil y los valores de propiedad se administran mediante un proveedor de perfiles.

La ProfileManager clase se usa para administrar la configuración del perfil, buscar perfiles de usuario y eliminar perfiles de usuario que ya no están en uso. La ProfileManager clase proporciona métodos estáticos y propiedades a los que se puede tener acceso haciendo referencia a la clase en el ProfileManager código de la aplicación. Para obtener un ejemplo, vea la sección Ejemplo de este tema y ejemplos adicionales en los temas de los miembros de la ProfileManager clase .

De forma predeterminada, el perfil de usuario está deshabilitado para todas las aplicaciones ASP.NET. Para habilitar el perfil de usuario, establezca el enabled atributo del elemento de configuración de perfil en true, como se muestra en el ejemplo siguiente.

<configuration>
  <system.web>
    <profile enabled="true" />
  </system.web>
</configuration>

Para obtener más información sobre el perfil de usuario, consulte ASP.NET Información general sobre las propiedades del perfil.

Un proveedor de perfiles se usa para almacenar y recuperar propiedades en el perfil de usuario. .NET Framework incluye una SqlProfileProvider clase que almacena las propiedades de perfil de usuario en una base de datos de SQL Server. Se especifica una SqlProfileProvider instancia denominada AspNetSqlProvider en la configuración de la máquina como proveedor de perfiles predeterminado. La AspNetSqlProvider instancia se conecta a la base de datos de SQL Server en el servidor web local. Puede especificar un SqlProfileProvider que se conecte a otro servidor SQL Server como proveedor de perfiles predeterminado mediante el elemento de configuración providers y el defaultProvider atributo del elemento de configuración de perfil , como se muestra en el ejemplo siguiente.

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString=
      "Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
  </connectionStrings>
  <system.web>
    <profile defaultProvider="SqlProvider">
      <providers>
        <clear />
        <add name="SqlProvider"
          type="System.Web.Profile.SqlProfileProvider"
          connectionStringName="SqlServices"
          applicationName="MyApplication" />
      </providers>
    </profile>
  </system.web>
</configuration>

Propiedades

ApplicationName

Obtiene o establece el nombre de la aplicación para la que se va a almacenar y recuperar información de perfil.

AutomaticSaveEnabled

Obtiene un valor que indica si el perfil de usuario se va a guardar automáticamente cuando termine la ejecución de una página ASP.NET.

Enabled

Obtiene un valor que indica si el perfil de usuario está habilita para la aplicación.

Provider

Obtiene una referencia al proveedor de perfiles predeterminado para la aplicación.

Providers

Obtiene una colección de los proveedores de perfiles para la aplicación ASP.NET.

Métodos

AddDynamicProfileProperty(ProfilePropertySettings)

Agrega una propiedad de perfil mediante programación.

DeleteInactiveProfiles(ProfileAuthenticationOption, DateTime)

Elimina los datos del perfil de usuario cuya última fecha y hora de actividad se produjeron antes de la fecha y hora especificadas.

DeleteProfile(String)

Elimina el perfil del nombre de usuario especificado del origen de datos.

DeleteProfiles(ProfileInfoCollection)

Elimina las propiedades e información de perfil del origen de datos correspondiente a lista de perfiles proporcionada.

DeleteProfiles(String[])

Elimina las propiedades e información de perfil correspondientes a la lista de nombres de usuario proporcionada.

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime)

Recupera información de perfil de todos los perfiles en los que la última fecha de actividad es igual o anterior a la fecha y hora especificadas y en los que el nombre de usuario del perfil coincide con el nombre especificado.

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime, Int32, Int32, Int32)

Recupera información de perfil en páginas de datos de los perfiles en los que la última fecha de actividad es igual o anterior a la fecha y hora especificadas y en los que el nombre de usuario del perfil coincide con el nombre especificado.

FindProfilesByUserName(ProfileAuthenticationOption, String)

Recupera toda la información de perfil de los perfiles en los que el nombre de usuario coincide con el nombre especificado.

FindProfilesByUserName(ProfileAuthenticationOption, String, Int32, Int32, Int32)

Recupera información de perfil en páginas de datos de los perfiles en los que el nombre de usuario coincide con el nombre especificado.

GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime)

Recupera todos los datos del perfil de usuario de los perfiles en los que la última fecha de actividad es igual o anterior a la fecha y hora especificadas.

GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime, Int32, Int32, Int32)

Recupera una página de objetos ProfileInfo para los perfiles de usuario en los que la última fecha de actividad sea igual o anterior a la fecha y hora especificadas.

GetAllProfiles(ProfileAuthenticationOption)

Recupera datos de perfil de usuario de los perfiles en el origen de datos.

GetAllProfiles(ProfileAuthenticationOption, Int32, Int32, Int32)

Recupera páginas de datos del perfil de usuario.

GetNumberOfInactiveProfiles(ProfileAuthenticationOption, DateTime)

Obtiene el número de perfiles para los que la última fecha de actividad es igual o anterior a la fecha especificada.

GetNumberOfProfiles(ProfileAuthenticationOption)

Obtiene el número de perfiles en el origen de datos.

Se aplica a

Produto Versións
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Consulte también