ProfileManager.GetAllInactiveProfiles Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Recupera los datos del perfil de usuario de los perfiles en los que la última fecha de actividad es igual o anterior a una fecha y hora especificadas.
Sobrecargas
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. |
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.
public:
static System::Web::Profile::ProfileInfoCollection ^ GetAllInactiveProfiles(System::Web::Profile::ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate);
public static System.Web.Profile.ProfileInfoCollection GetAllInactiveProfiles (System.Web.Profile.ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate);
static member GetAllInactiveProfiles : System.Web.Profile.ProfileAuthenticationOption * DateTime -> System.Web.Profile.ProfileInfoCollection
Public Shared Function GetAllInactiveProfiles (authenticationOption As ProfileAuthenticationOption, userInactiveSinceDate As DateTime) As ProfileInfoCollection
Parámetros
- authenticationOption
- ProfileAuthenticationOption
Uno de los valores de la enumeración ProfileAuthenticationOption, que especifica si se devuelven perfiles anónimos, autenticados o de ambos tipos.
- userInactiveSinceDate
- DateTime
Un objeto DateTime que identifica qué perfiles de usuario se consideran inactivos. Si el valor de propiedad LastActivityDate de un perfil de usuario es igual o anterior a esta fecha y hora, el perfil se considera inactivo.
Devoluciones
Colección ProfileInfoCollection que contiene información de perfil de usuario sobre los perfiles inactivos.
Ejemplos
En el ejemplo de código siguiente se muestra una página de ASP.NET que administra perfiles inactivos. Se proporciona un botón para eliminar todos los perfiles inactivos. Si un perfil se considera inactivo se basa en la fecha especificada para el userInactiveSinceDate
parámetro .
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#" %>
<%@ 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">
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.
GetProfiles();
}
private void GetProfiles()
{
ProfileGrid.DataSource = ProfileManager.GetAllInactiveProfiles(authOption,
DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)));
ProfileGrid.DataBind();
}
public void NextButton_OnClick(object sender, EventArgs args)
{
GetProfiles();
}
public void PreviousButton_OnClick(object sender, EventArgs args)
{
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>
</tr>
</table>
<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>
<%@ Page Language="VB" %>
<%@ 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">
Dim authOption As ProfileAuthenticationOption
Dim inactiveDays As Integer = 120
Dim deletedProfiles As Integer = 0
Public Sub Page_Load()
DeletedMessage.Text = ""
authOption = GetAuthenticationOption()
If Not IsPostBack Then
InactiveDaysTextBox.Text = inactiveDays.ToString()
GetProfiles()
Else
inactiveDays = Convert.ToInt32(InactiveDaysTextBox.Text)
End If
End Sub
Public Sub ProfileGrid_Delete(sender As Object, args As GridViewCommandEventArgs)
' Retrieve user name selected.
Dim index As Integer = Convert.ToInt32(args.CommandArgument)
Dim username As String = ProfileGrid.Rows(index).Cells(0).Text
ProfileManager.DeleteProfiles(New String() {username})
DeletedMessage.Text = "1 profile deleted."
' Refresh profile list.
GetProfiles()
End Sub
Private Sub GetProfiles()
ProfileGrid.DataSource = ProfileManager.GetAllInactiveProfiles(authOption, _
DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)))
ProfileGrid.DataBind()
End Sub
Public Sub NextButton_OnClick(sender As Object, args As EventArgs)
GetProfiles()
End Sub
Public Sub PreviousButton_OnClick(sender As Object, args As EventArgs)
GetProfiles()
End Sub
Public Sub ModifyInactiveDaysButton_OnClick(sender As Object, args As EventArgs)
GetProfiles()
End Sub
Public Sub AuthenticationOptionListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs)
authOption = GetAuthenticationOption()
GetProfiles()
End Sub
Private Function GetAuthenticationOption() As ProfileAuthenticationOption
If Not AuthenticationOptionListBox.SelectedItem Is Nothing Then
Select Case AuthenticationOptionListBox.SelectedItem.Value
Case "Anonymous"
Return ProfileAuthenticationOption.Anonymous
Case "Authenticated"
Return ProfileAuthenticationOption.Authenticated
Case Else
Return ProfileAuthenticationOption.All
End Select
End If
Return ProfileAuthenticationOption.All
End Function
Public Sub DeleteAllInactiveButton_OnClick(sender As Object, args As EventArgs)
deletedProfiles = ProfileManager.DeleteInactiveProfiles(authOption, _
DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0 ,0)))
DeletedMessage.Text = deletedProfiles.ToString() & " profiles deleted."
GetProfiles()
End Sub
</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>
</tr>
</table>
<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 GetAllInactiveProfiles método se usa para recuperar información de perfil del origen de datos para todos los perfiles de usuario no usados para la aplicación especificada por el applicationName
atributo en el archivo de configuración. Use el authenticationOption
parámetro para especificar si solo desea que se busquen perfiles anónimos, solo perfiles autenticados o todos los perfiles. De los perfiles buscados, se devuelve cualquier perfil que tenga un LastActivityDate que se produzca en o antes del valor de parámetro especificado userInactiveSinceDate
.
Puede recuperar información de perfil para perfiles de usuario inactivos en páginas de datos mediante la sobrecarga del GetAllInactiveProfiles método que toma parámetros y pageSize
adicionalespageIndex
.
El GetAllInactiveProfiles método llama al GetAllInactiveProfiles método del proveedor de perfiles predeterminado. El proveedor de perfiles predeterminado se especifica mediante el defaultProvider
atributo del elemento de configuración del perfil . Si el perfil de usuario contiene propiedades administradas por un proveedor de perfiles que no sea el proveedor predeterminado, no se busca en el origen de datos del otro proveedor de perfiles. Para buscar perfiles sin usar administrados por un proveedor de perfiles distinto del proveedor predeterminado, obtenga una referencia al proveedor de perfiles mediante la Providers propiedad y llame directamente al GetAllInactiveProfiles método del proveedor.
Consulte también
Se aplica a
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.
public:
static System::Web::Profile::ProfileInfoCollection ^ GetAllInactiveProfiles(System::Web::Profile::ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, [Runtime::InteropServices::Out] int % totalRecords);
public static System.Web.Profile.ProfileInfoCollection GetAllInactiveProfiles (System.Web.Profile.ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords);
static member GetAllInactiveProfiles : System.Web.Profile.ProfileAuthenticationOption * DateTime * int * int * int -> System.Web.Profile.ProfileInfoCollection
Public Shared Function GetAllInactiveProfiles (authenticationOption As ProfileAuthenticationOption, userInactiveSinceDate As DateTime, pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As ProfileInfoCollection
Parámetros
- authenticationOption
- ProfileAuthenticationOption
Uno de los valores de la enumeración ProfileAuthenticationOption, que especifica si se devuelven perfiles anónimos, autenticados o de ambos tipos.
- userInactiveSinceDate
- DateTime
Un objeto DateTime que identifica qué perfiles de usuario se consideran inactivos. Si el valor de propiedad LastActivityDate de un perfil de usuario es igual o anterior a esta fecha y hora, el perfil se considera inactivo.
- pageIndex
- Int32
El índice de la página de resultados que se va a devolver.
pageIndex
es de base cero.
- pageSize
- Int32
Tamaño de la página de resultados que se va a devolver.
- totalRecords
- Int32
El resultado que devuelve este método contiene un entero que identifica el número total de perfiles. Este parámetro se pasa sin inicializar.
Devoluciones
Colección ProfileInfoCollection que contiene información de perfil de usuario sobre los perfiles inactivos.
Ejemplos
En el ejemplo de código siguiente se muestra una página web ASP.NET que administra perfiles inactivos. Se proporciona un botón para eliminar todos los perfiles inactivos. Si un perfil se considera inactivo se basa en la fecha especificada para el userInactiveSinceDate
parámetro .
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#" %>
<%@ 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>
<%@ Page Language="VB" %>
<%@ 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">
Dim pageSize As Integer = 5
Dim totalProfiles As Integer
Dim totalPages As Integer
Dim currentPage As Integer = 1
Dim authOption As ProfileAuthenticationOption
Dim inactiveDays As Integer = 120
Dim deletedProfiles As Integer = 0
Public Sub Page_Load()
DeletedMessage.Text = ""
authOption = GetAuthenticationOption()
If Not IsPostBack Then
InactiveDaysTextBox.Text = inactiveDays.ToString()
GetProfiles()
Else
inactiveDays = Convert.ToInt32(InactiveDaysTextBox.Text)
End If
End Sub
Public Sub ProfileGrid_Delete(sender As Object, args As GridViewCommandEventArgs)
' Retrieve user name selected.
Dim index As Integer = Convert.ToInt32(args.CommandArgument)
Dim username As String = 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()
End Sub
Private Sub GetProfiles()
ProfileGrid.DataSource = ProfileManager.GetAllInactiveProfiles(authOption, _
DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0)), _
currentPage - 1, pageSize, 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 Then
currentPage = totalPages
GetProfiles()
Return
End If
ProfileGrid.DataBind()
CurrentPageLabel.Text = currentPage.ToString()
TotalPagesLabel.Text = totalPages.ToString()
If currentPage = totalPages Then
NextButton.Visible = False
Else
NextButton.Visible = True
End If
If currentPage = 1 Then
PreviousButton.Visible = False
Else
PreviousButton.Visible = True
End If
If totalProfiles <= 0 Then
NavigationPanel.Visible = False
Else
NavigationPanel.Visible = True
End If
End Sub
Public Sub NextButton_OnClick(sender As Object, args As EventArgs)
currentPage = Convert.ToInt32(CurrentPageLabel.Text)
currentPage += 1
GetProfiles()
End Sub
Public Sub PreviousButton_OnClick(sender As Object, args As EventArgs)
currentPage = Convert.ToInt32(CurrentPageLabel.Text)
currentPage -= 1
GetProfiles()
End Sub
Public Sub ModifyInactiveDaysButton_OnClick(sender As Object, args As EventArgs)
GetProfiles()
End Sub
Public Sub AuthenticationOptionListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs)
authOption = GetAuthenticationOption()
GetProfiles()
End Sub
Private Function GetAuthenticationOption() As ProfileAuthenticationOption
If Not AuthenticationOptionListBox.SelectedItem Is Nothing Then
Select Case AuthenticationOptionListBox.SelectedItem.Value
Case "Anonymous"
Return ProfileAuthenticationOption.Anonymous
Case "Authenticated"
return ProfileAuthenticationOption.Authenticated
Case Else
Return ProfileAuthenticationOption.All
End Select
End If
Return ProfileAuthenticationOption.All
End Function
Public Sub DeleteAllInactiveButton_OnClick(sender As Object, args As EventArgs)
deletedProfiles = ProfileManager.DeleteInactiveProfiles(authOption, _
DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0 ,0)))
DeletedMessage.Text = deletedProfiles.ToString() & " profiles deleted."
GetProfiles()
End SUb
</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 GetAllInactiveProfiles método se usa para recuperar la información de perfil del origen de datos de los perfiles de usuario no utilizados para la aplicación especificada por el applicationName
atributo en el archivo de configuración. Use el authenticationOption
parámetro para especificar si solo desea que se busquen perfiles anónimos, solo perfiles autenticados o todos los perfiles. De los perfiles buscados, se devuelve cualquier perfil que tenga un LastActivityDate que se produzca antes del valor de parámetro especificado userInactiveSinceDate
.
Los resultados devueltos por GetAllInactiveProfiles están restringidos por los pageIndex
parámetros y pageSize
. El pageSize
parámetro identifica el número máximo de ProfileInfo objetos que se van a devolver en .ProfileInfoCollection El pageIndex
parámetro identifica la página de resultados que se va a devolver; cero identifica la primera página. El totalRecords
parámetro es un out
parámetro que se establece en el número total de perfiles de usuario inactivos para el configurado applicationName
, en función de los authenticationOption
parámetros y userInactiveSinceDate
. Por ejemplo, si hay 13 usuarios para el configurado applicationName
y el pageIndex
valor es uno con un pageSize
de 5, el ProfileInfoCollection devuelto contendrá el sexto hasta el décimo perfil inactivo. El totalRecords
parámetro se establecerá en 13.
El GetAllInactiveProfiles método llama al GetAllInactiveProfiles método del proveedor de perfiles predeterminado. El proveedor de perfiles predeterminado se especifica mediante el defaultProvider
atributo del elemento de configuración del perfil . Si el perfil de usuario contiene propiedades administradas por un proveedor de perfiles que no sea el proveedor predeterminado, no se busca en el origen de datos del otro proveedor de perfiles. Para buscar perfiles administrados por un proveedor de perfiles distinto del proveedor predeterminado, obtenga una referencia al proveedor de perfiles mediante la Providers propiedad y llame directamente al GetAllInactiveProfiles método del proveedor.