ProfileManager.GetAllInactiveProfiles Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft Benutzerprofildaten für Profile ab, bei denen das Datum der letzten Aktivität am oder vor einem angegebenen Datum und der angegeben Uhrzeit liegt.
Überlädt
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime) |
Ruft alle Benutzerprofildaten für Profile ab, bei denen das Datum der letzten Aktivität am oder vor dem angegebenen Datum und der angegeben Uhrzeit liegt. |
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime, Int32, Int32, Int32) |
Ruft eine Seite von ProfileInfo-Objekten für Benutzerprofile ab, bei denen das Datum der letzten Aktivität am oder vor dem angegebenen Datum und der angegeben Uhrzeit liegt. |
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime)
Ruft alle Benutzerprofildaten für Profile ab, bei denen das Datum der letzten Aktivität am oder vor dem angegebenen Datum und der angegeben Uhrzeit liegt.
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
Parameter
- authenticationOption
- ProfileAuthenticationOption
Einer der ProfileAuthenticationOption-Enumerationswerte, der angibt, ob anonyme, authentifizierte oder beide Profiltypen zurückgegeben werden.
- userInactiveSinceDate
- DateTime
Ein DateTime, der festlegt, welche Benutzerprofile als inaktiv betrachtet werden. Wenn das LastActivityDate eines Benutzerprofils zu oder vor diesem Zeitpunkt (Datum und Uhrzeit) auftritt, gilt das Profil als inaktiv.
Gibt zurück
Eine ProfileInfoCollection, die Benutzerprofilinformationen zu den inaktiven Profilen enthält.
Beispiele
Das folgende Codebeispiel zeigt eine ASP.NET Seite, die inaktive Profile verwaltet. Eine Schaltfläche wird bereitgestellt, um alle inaktiven Profile zu löschen. Ob ein Profil als inaktiv gilt, basiert auf dem für den userInactiveSinceDate
Parameter angegebenen Datum.
Wichtig
Dieses Beispiel enthält ein Textfeld, das Benutzereingaben akzeptiert, was eine potenzielle Sicherheitsbedrohung darstellt. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
<%@ 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>
Hinweise
Die GetAllInactiveProfiles -Methode wird verwendet, um Profilinformationen aus der Datenquelle für alle nicht verwendeten Benutzerprofile für die Anwendung abzurufen, die durch das applicationName
Attribut in der Konfigurationsdatei angegeben wird. Verwenden Sie den authenticationOption
Parameter, um anzugeben, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile durchsucht werden sollen. Von den durchsuchten Profilen wird jedes Profil zurückgegeben, das einen LastActivityDate hat, der am oder vor dem angegebenen userInactiveSinceDate
Parameterwert auftritt.
Sie können Profilinformationen für inaktive Benutzerprofile auf Datenseiten abrufen, indem Sie die Überladung für die Methode verwenden, die GetAllInactiveProfiles zusätzliche pageIndex
Parameter und pageSize
benötigt.
Die GetAllInactiveProfiles -Methode ruft die GetAllInactiveProfiles Methode des Standardprofilanbieters auf. Der Standardprofilanbieter wird mithilfe des defaultProvider
Attributs des Profilkonfigurationselements angegeben. Wenn das Benutzerprofil Eigenschaften enthält, die von einem anderen Profilanbieter als dem Standardanbieter verwaltet werden, wird die Datenquelle für den anderen Profilanbieter nicht durchsucht. Um nicht verwendete Profile zu finden, die von einem anderen Profilanbieter als dem Standardanbieter verwaltet werden, rufen Sie mithilfe Providers der -Eigenschaft einen Verweis auf den Profilanbieter ab, und rufen Sie die GetAllInactiveProfiles Methode des Anbieters direkt auf.
Weitere Informationen
Gilt für:
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime, Int32, Int32, Int32)
Ruft eine Seite von ProfileInfo-Objekten für Benutzerprofile ab, bei denen das Datum der letzten Aktivität am oder vor dem angegebenen Datum und der angegeben Uhrzeit liegt.
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
Parameter
- authenticationOption
- ProfileAuthenticationOption
Einer der ProfileAuthenticationOption-Enumerationswerte, der angibt, ob anonyme, authentifizierte oder beide Profiltypen zurückgegeben werden.
- userInactiveSinceDate
- DateTime
Ein DateTime, der festlegt, welche Benutzerprofile als inaktiv betrachtet werden. Wenn das LastActivityDate eines Benutzerprofils zu oder vor diesem Zeitpunkt (Datum und Uhrzeit) auftritt, gilt das Profil als inaktiv.
- pageIndex
- Int32
Der Index der zurückgegebenen Ergebnisseite.
pageIndex
ist nullbasiert.
- pageSize
- Int32
Die Größe der zurückzugebenden Ergebnisseite.
- totalRecords
- Int32
Diese Methode enthält bei der Rückgabe eine ganze Zahl, die die Gesamtanzahl von Profilen bezeichnet. Dieser Parameter wird nicht initialisiert übergeben.
Gibt zurück
Eine ProfileInfoCollection, die Benutzerprofilinformationen zu den inaktiven Profilen enthält.
Beispiele
Das folgende Codebeispiel zeigt eine ASP.NET Webseite, die inaktive Profile verwaltet. Eine Schaltfläche wird bereitgestellt, um alle inaktiven Profile zu löschen. Ob ein Profil als inaktiv gilt, basiert auf dem für den userInactiveSinceDate
Parameter angegebenen Datum.
Wichtig
Dieses Beispiel enthält ein Textfeld, das Benutzereingaben akzeptiert, was eine potenzielle Sicherheitsbedrohung darstellt. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
<%@ 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>
Hinweise
Die GetAllInactiveProfiles -Methode wird verwendet, um Profilinformationen aus der Datenquelle für nicht verwendete Benutzerprofile für die Anwendung abzurufen, die durch das applicationName
Attribut in der Konfigurationsdatei angegeben wird. Verwenden Sie den authenticationOption
Parameter, um anzugeben, ob nur anonyme Profile, nur authentifizierte Profile oder alle Profile durchsucht werden sollen. Von den durchsuchten Profilen wird jedes Profil zurückgegeben, das vor LastActivityDate dem angegebenen userInactiveSinceDate
Parameterwert auftritt.
Die von GetAllInactiveProfiles zurückgegebenen Ergebnisse werden durch die pageIndex
Parameter und pageSize
eingeschränkt. Der pageSize
-Parameter gibt die maximale Anzahl von ProfileInfo Objekten an, die ProfileInfoCollectionin zurückgegeben werden sollen. Der pageIndex
Parameter gibt an, welche Ergebnisseite zurückgegeben werden soll. Null identifiziert die erste Seite. Der totalRecords
Parameter ist ein out
Parameter, der auf die Gesamtzahl inaktiver Benutzerprofile für das konfigurierte applicationName
festgelegt ist, basierend auf den authenticationOption
Parametern und userInactiveSinceDate
. Wenn es beispielsweise 13 Benutzer für die konfigurierte applicationName
gibt und der pageIndex
Wert eins mit einem pageSize
von 5 ist, enthält das ProfileInfoCollection zurückgegebene das sechste bis zehnte inaktive Profil. Der totalRecords
Parameter wird auf 13 festgelegt.
Die GetAllInactiveProfiles -Methode ruft die GetAllInactiveProfiles Methode des Standardprofilanbieters auf. Der Standardprofilanbieter wird mithilfe des defaultProvider
Attributs des Profilkonfigurationselements angegeben. Wenn das Benutzerprofil Eigenschaften enthält, die von einem anderen Profilanbieter als dem Standardanbieter verwaltet werden, wird die Datenquelle für den anderen Profilanbieter nicht durchsucht. Um Profile zu finden, die von einem anderen Profilanbieter als dem Standardanbieter verwaltet werden, rufen Sie mithilfe Providers der -Eigenschaft einen Verweis auf den Profilanbieter ab, und rufen Sie die GetAllInactiveProfiles Methode des Anbieters direkt auf.