SqlProfileProvider.GetAllInactiveProfiles Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen tarih ve saat üzerinde veya öncesinde son etkinlik tarihinin gerçekleştiği profiller için kullanıcı profili verilerini alır.
public:
override System::Web::Profile::ProfileInfoCollection ^ GetAllInactiveProfiles(System::Web::Profile::ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, [Runtime::InteropServices::Out] int % totalRecords);
public override System.Web.Profile.ProfileInfoCollection GetAllInactiveProfiles (System.Web.Profile.ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords);
override this.GetAllInactiveProfiles : System.Web.Profile.ProfileAuthenticationOption * DateTime * int * int * int -> System.Web.Profile.ProfileInfoCollection
Public Overrides Function GetAllInactiveProfiles (authenticationOption As ProfileAuthenticationOption, userInactiveSinceDate As DateTime, pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As ProfileInfoCollection
Parametreler
- authenticationOption
- ProfileAuthenticationOption
ProfileAuthenticationOption Anonim, kimliği doğrulanmış veya her iki profil türünün de döndürüleceğini belirten değerlerden biri.
- userInactiveSinceDate
- DateTime
DateTime Hangi kullanıcı profillerinin etkin olmadığını belirten bir. Bir kullanıcı profilinin LastActivityDate değeri bu tarih ve saatte veya öncesinde gerçekleşirse, profil devre dışı olarak kabul edilir.
- pageIndex
- Int32
Döndürülecek sonuç sayfasının dizini.
pageIndex
sıfır tabanlıdır.
- pageSize
- Int32
Döndürülecek sonuç sayfasının boyutu.
- totalRecords
- Int32
Bu yöntem döndürdüğünde, toplam profil sayısını tanımlayan bir tamsayı içerir. Bu parametre, başlatmadan iletilir.
Döndürülenler
ProfileInfoCollection Etkin olmayan profiller hakkında kullanıcı profili bilgilerini içeren bir.
Özel durumlar
pageIndex
, sıfırdan küçüktür.
-veya-
pageSize
birden azdır.
-veya-
pageIndex
ile çarpılması pageSize
Int32.MaxValue değerinden büyüktür.
Örnekler
Aşağıdaki kod örneği, etkin olmayan profilleri yöneten bir ASP.NET sayfasını gösterir. Tüm etkin olmayan profilleri silmek için bir düğme sağlanır. Bir profilin etkin olmadığını kabul edip etmediği, parametresi için belirtilen tarihe userInactiveSinceDate
bağlıdır.
<%@ 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;
SqlProfileProvider provider;
ProfileAuthenticationOption authOption;
int inactiveDays = 120;
int deletedProfiles = 0;
public void Page_Load()
{
DeletedMessage.Text = "";
provider = (SqlProfileProvider)Profile.Providers["SqlProvider"];
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;
provider.DeleteProfiles(new string[] {username});
DeletedMessage.Text = "1 profile deleted.";
// Refresh profile list.
currentPage = Convert.ToInt32(CurrentPageLabel.Text);
GetProfiles();
}
private void GetProfiles()
{
ProfileGrid.DataSource = provider.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 = provider.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 provider As SqlProfileProvider
Dim authOption As ProfileAuthenticationOption
Dim inactiveDays As Integer = 120
Dim deletedProfiles As Integer = 0
Public Sub Page_Load()
DeletedMessage.Text = ""
provider = CType(Profile.Providers("SqlProvider"), SqlProfileProvider)
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
provider.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 = provider.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 = provider.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>
Açıklamalar
GetAllInactiveProfiles yöntemi, yapılandırma dosyasında özniteliği tarafından applicationName
belirtilen uygulama için kullanılmayan kullanıcı profilleri için veri kaynağından profil bilgilerini almak için kullanılır. Yalnızca anonim profillerin authenticationOption
mi, yalnızca kimliği doğrulanmış profillerin mi yoksa tüm profillerin mi aranmasını istediğinizi belirtmek için parametresini kullanın. Arama yapılan profiller içinde, belirtilen userInactiveSinceDate
parametre değeri döndürülmeden önce bir içeren herhangi bir LastActivityDate profil.
tarafından GetAllInactiveProfiles döndürülen sonuçlar ve pageSize
parametreleriyle pageIndex
kısıtlanır. parametresi içinde pageSize
döndürülecek ProfileInfoCollectionen fazla nesne sayısını ProfileInfo tanımlar.
pageIndex
parametresi döndürülecek sonuç sayfasını tanımlar; 0 ilk sayfayı tanımlar.
totalRecords
parametresi, ve userInactiveSinceDate
parametrelerine göre authenticationOption
yapılandırılan applicationName
için etkin olmayan kullanıcı profillerinin toplam sayısına ayarlanmış bir out
parametredir. Örneğin, yapılandırılmış applicationName
için 13 kullanıcı varsa ve pageIndex
değer 5 ile 1 pageSize
ise, ProfileInfoCollection döndürülen altıncı ile onuncu etkin olmayan profilleri içerir.
totalRecords
parametresi 13 olarak ayarlanır.