ProfileManager.GetAllInactiveProfiles 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
擷取上次活動日期發生在指定日期和時間或之前的設定檔之使用者設定檔資料。
多載
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime) |
擷取上次活動日期發生在指定的日期和時間或之前的設定檔之所有使用者設定檔資料。 |
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime, Int32, Int32, Int32) |
擷取使用者設定檔之 ProfileInfo 物件的某個頁面,其中設定檔的上次活動日期發生在指定的日期和時間或之前。 |
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime)
擷取上次活動日期發生在指定的日期和時間或之前的設定檔之所有使用者設定檔資料。
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
參數
- authenticationOption
- ProfileAuthenticationOption
ProfileAuthenticationOption 的其中一個列舉值,指定是否要傳回匿名、已驗證或是這兩種類型的設定檔。
- userInactiveSinceDate
- DateTime
DateTime,識別哪些使用者設定檔視為非現用。 如果使用者設定檔的 LastActivityDate 發生在這個日期與時間或之前,則會將其視為非使用中設定檔。
傳回
ProfileInfoCollection,包含關於非現用設定檔的使用者設定檔資訊。
範例
下列程式代碼範例顯示管理非使用中配置檔 ASP.NET 頁面。 提供按鈕來刪除所有非作用中的配置檔。 配置檔是否被視為非使用中 userInactiveSinceDate
,是以為 參數指定的日期為基礎。
重要
此範例包含接受使用者輸入的文本框,這是潛在的安全性威脅。 根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 Script Exploits Overview (指令碼攻擊概觀)。
<%@ 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>
備註
方法 GetAllInactiveProfiles 可用來從數據源擷取配置檔資訊,以取得組態檔中 屬性所 applicationName
指定之應用程式的所有未使用使用者配置檔。
authenticationOption
使用 參數來指定您只想要匿名配置檔、只想要經過驗證的配置檔,還是要搜尋的所有配置檔。 在搜尋的配置檔中,會傳回任何配置檔,該配置檔會在 LastActivityDate 指定的 userInactiveSinceDate
參數值上或之前發生。
您可以使用採用其他 pageIndex
和 pageSize
參數之 方法的多載,擷取數據頁面中非作用中使用者配置檔的GetAllInactiveProfiles配置檔資訊。
方法 GetAllInactiveProfiles 會 GetAllInactiveProfiles 呼叫預設配置檔提供者的 方法。 預設設定檔提供者是使用defaultProvider
設定檔組態項目的 屬性來指定。 如果使用者配置檔包含由預設提供者以外的配置檔提供者所管理的屬性,則不會搜尋其他配置檔提供者的數據源。 若要尋找由預設提供者以外的配置檔提供者所管理的未使用配置檔,請使用 Providers 屬性取得配置檔提供者的參考,並直接呼叫 GetAllInactiveProfiles 提供者的 方法。
另請參閱
適用於
GetAllInactiveProfiles(ProfileAuthenticationOption, DateTime, Int32, Int32, Int32)
擷取使用者設定檔之 ProfileInfo 物件的某個頁面,其中設定檔的上次活動日期發生在指定的日期和時間或之前。
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
參數
- authenticationOption
- ProfileAuthenticationOption
ProfileAuthenticationOption 的其中一個列舉值,指定是否要傳回匿名、已驗證或是這兩種類型的設定檔。
- userInactiveSinceDate
- DateTime
DateTime,識別哪些使用者設定檔視為非現用。 如果使用者設定檔的 LastActivityDate 發生在這個日期與時間或之前,則會將其視為非使用中設定檔。
- pageIndex
- Int32
要傳回的結果網頁索引。
pageIndex
以零為起始。
- pageSize
- Int32
要傳回的結果網頁大小。
- totalRecords
- Int32
當這個方法傳回時,包含識別設定檔總數的整數。 這個參數會以未初始化的狀態傳遞。
傳回
ProfileInfoCollection,包含關於非現用設定檔的使用者設定檔資訊。
範例
下列程式代碼範例顯示管理非使用中配置檔 ASP.NET 網頁。 提供按鈕來刪除所有非作用中的配置檔。 配置檔是否被視為非使用中 userInactiveSinceDate
,是以為 參數指定的日期為基礎。
重要
此範例包含接受使用者輸入的文本框,這是潛在的安全性威脅。 根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 Script Exploits Overview (指令碼攻擊概觀)。
<%@ 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>
備註
方法 GetAllInactiveProfiles 可用來從數據源擷取配置檔資訊,以取得組態檔中 屬性所 applicationName
指定之應用程式的未使用使用者配置檔。
authenticationOption
使用 參數來指定您只想要匿名配置檔、只想要經過驗證的配置檔,還是要搜尋的所有配置檔。 在搜尋的配置檔中,會傳回任何在 LastActivityDate 指定 userInactiveSinceDate
參數值之前發生的 配置檔。
傳 GetAllInactiveProfiles 回的結果會受到 pageIndex
和 pageSize
參數的限制。 參數pageSize
會識別 中要傳ProfileInfoCollection回的物件ProfileInfo數目上限。 參數 pageIndex
會識別要傳回的結果頁面;零會識別第一頁。 參數totalRecords
是參數out
,根據 和 userInactiveSinceDate
參數,設定為applicationName
authenticationOption
所設定的非使用中使用者配置檔總數。 例如,如果已設定applicationName
的 有13位使用者,且pageIndex
值為5的,則傳回的 ProfileInfoCollection 會包含第六個到第十個pageSize
非作用中的設定檔。 參數 totalRecords
將會設定為 13。
方法 GetAllInactiveProfiles 會 GetAllInactiveProfiles 呼叫預設配置檔提供者的 方法。 預設設定檔提供者是使用defaultProvider
設定檔組態項目的 屬性來指定。 如果使用者配置檔包含由預設提供者以外的配置檔提供者所管理的屬性,則不會搜尋其他配置檔提供者的數據源。 若要尋找由預設提供者以外的配置檔提供者所管理的配置檔,請使用 Providers 屬性取得配置檔提供者的參考,並直接呼叫 GetAllInactiveProfiles 提供者的 方法。