SqlProfileProvider.GetAllInactiveProfiles メソッド
アセンブリ: System.Web (system.web.dll 内)

Public Overrides Function GetAllInactiveProfiles ( _ authenticationOption As ProfileAuthenticationOption, _ userInactiveSinceDate As DateTime, _ pageIndex As Integer, _ pageSize As Integer, _ <OutAttribute> ByRef totalRecords As Integer _ ) As ProfileInfoCollection
Dim instance As SqlProfileProvider Dim authenticationOption As ProfileAuthenticationOption Dim userInactiveSinceDate As DateTime Dim pageIndex As Integer Dim pageSize As Integer Dim totalRecords As Integer Dim returnValue As ProfileInfoCollection returnValue = instance.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, pageIndex, pageSize, totalRecords)
public override ProfileInfoCollection GetAllInactiveProfiles ( ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords )
public: virtual ProfileInfoCollection^ GetAllInactiveProfiles ( ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, [OutAttribute] int% totalRecords ) override
public ProfileInfoCollection GetAllInactiveProfiles ( ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, /** @attribute OutAttribute() */ /** @ref */ int totalRecords )
- userInactiveSinceDate
アクティブでないと見なすユーザー プロファイルを識別する DateTime。ユーザー プロファイルの LastActivityDate が、この日時と同じまたはそれ以前の場合、このプロファイルはアクティブでないと見なされます。
アクティブでないプロファイルに関するユーザー プロファイル情報を格納している ProfileInfoCollection。


GetAllInactiveProfiles メソッドは、構成ファイル内の applicationName 属性で指定されたアプリケーションの、使用されていないユーザー プロファイルに関するプロファイル情報をデータ ソースから取得するために使用されます。検索対象のプロファイル (匿名のプロファイルのみ、認証済みプロファイルのみ、またはすべてのプロファイル) を指定するには、authenticationOption パラメータを使用します。検索されたプロファイルのうち、LastActivityDate が指定された userInactiveSinceDate パラメータ値より前であるプロファイルが返されます。
GetAllInactiveProfiles によって返される結果は、pageIndex パラメータおよび pageSize パラメータによって制限されます。pageSize パラメータには、ProfileInfoCollection で返す ProfileInfo オブジェクトの最大数を指定します。pageIndex パラメータには、取得する結果のページを指定します。0 が最初のページを表します。totalRecords パラメータは、authenticationOption パラメータと userInactiveSinceDate パラメータに基づいて、構成済みの applicationName に対してアクティブでないユーザー プロファイルの合計数に設定された out パラメータです。たとえば、構成済みの applicationName に 13 人のユーザーが存在し、pageIndex 値が 1 で pageSize が 5 である場合、返される ProfileInfoCollection には 6 番目から 10 番目までのアクティブでないプロファイルが含まれます。totalRecords パラメータは、13 に設定されます。

アクティブでないプロファイルを管理する ASP.NET ページを表示するコードの例を次に示します。アクティブでないプロファイルをすべて削除するためのボタンが用意されています。プロファイルがアクティブでないかどうかは userInactiveSinceDate パラメータに指定された日付に基づいて判断されます。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Profile" %> <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> <head> <title>Sample: Find Profiles</title> </head> <body> <form 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" width="160"> Number of Days for Profile to be considered "inactive"</td> <td valign="top" 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 width=100>Page <asp:Label id="CurrentPageLabel" runat="server" /> of <asp:Label id="TotalPagesLabel" runat="server" /></td> <td width=60><asp:LinkButton id="PreviousButton" Text="< Prev" OnClick="PreviousButton_OnClick" runat="server" /></td> <td 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 runat="server" HeaderText="User Name" DataField="Username" /> <asp:BoundField runat="server" HeaderText="Is Anonymous" DataField="IsAnonymous" /> <asp:BoundField runat="server" HeaderText="Last Updated" DataField="LastUpdatedDate" /> <asp:BoundField runat="server" HeaderText="Last Activity" DataField="LastActivityDate" /> <asp:ButtonField runat="server" HeaderText="Action" Text="Delete" ButtonType="Link" /> </Columns> </asp:GridView> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Profile" %> <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> <head> <title>Sample: Find Profiles</title> </head> <body> <form 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" width="160"> Number of Days for Profile to be considered "inactive"</td> <td valign="top" 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 width=100>Page <asp:Label id="CurrentPageLabel" runat="server" /> of <asp:Label id="TotalPagesLabel" runat="server" /></td> <td width=60><asp:LinkButton id="PreviousButton" Text="< Prev" OnClick="PreviousButton_OnClick" runat="server" /></td> <td 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 runat="server" HeaderText="User Name" DataField="Username" /> <asp:BoundField runat="server" HeaderText="Is Anonymous" DataField="IsAnonymous" /> <asp:BoundField runat="server" HeaderText="Last Updated" DataField="LastUpdatedDate" /> <asp:BoundField runat="server" HeaderText="Last Activity" DataField="LastActivityDate" /> <asp:ButtonField runat="server" HeaderText="Action" Text="Delete" ButtonType="Link" /> </Columns> </asp:GridView> </form> </body> </html>

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SqlProfileProvider.GetAllInactiveProfiles メソッドのページへのリンク