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

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


FindInactiveProfilesByUserName メソッドは、構成ファイル内の applicationName 属性で指定されたアプリケーションの、使用されていないユーザー プロファイルに関するプロファイル情報を取得するために使用されます。このメソッドは、プロファイルのユーザー名と指定された usernameToMatch パラメータ値が一致するプロファイルだけを取得します。検索対象のプロファイル (匿名のプロファイルのみ、認証済みプロファイルのみ、またはすべてのプロファイル) を指定するには、authenticationOption パラメータを使用します。検索されたプロファイルのうち、LastActivityDate が指定された userInactiveSinceDate パラメータ値より前であるプロファイルが返されます。
SqlProfileProvider は、LIKE キーワードを使用して usernameToMatch パラメータ値と一致する値を検索します。パーセント記号 (%) などのワイルドカード文字にも対応しています。たとえば、usernameToMatch パラメータを "user1" に設定した場合、"user1" のユーザー名が付いたプロファイルが存在していれば、そのプロファイル情報が返されます。usernameToMatch パラメータを "user%" に設定した場合、"user1"、"user2"、"user_admin" などのユーザー名が付いたプロファイルのプロファイル情報が返されます。このとき返されるユーザー名の順序は、プロファイルがデータ ストアに追加された順です。
FindInactiveProfilesByUserName によって返される結果は、pageIndex パラメータおよび pageSize パラメータによって制限されます。pageSize パラメータには、ProfileInfoCollection で返す ProfileInfo オブジェクトの最大数を指定します。pageIndex パラメータには、取得する結果のページを指定します。0 が最初のページを表します。totalRecords パラメータは、authenticationOption パラメータと userInactiveSinceDate パラメータに基づいて、構成済みの applicationName に対してアクティブでないユーザー プロファイルの合計数に設定された out パラメータです。たとえば、構成済みの applicationName に 13 人のユーザーが存在し、pageIndex 値が 1 で pageSize が 5 である場合、返される ProfileInfoCollection には 6 番目から 10 番目までのアクティブでないプロファイルが含まれます。totalRecords パラメータは、13 に設定されます。

次のコード例では、ユーザーが usernameToMatch 値と ProfileAuthenticationOption を指定し、これに一致するプロファイルについてのプロファイル情報を取得できます。この例では、アクティブでないプロファイルだけを返すかどうかをユーザーが指定することもできます。アクティブでないプロファイルのみを返すようにユーザーが指定した場合は、FindInactiveProfilesByUserName メソッドを呼び出します。それ以外の場合は、FindProfilesByUserName メソッドを呼び出します。
<%@ 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 authOption As ProfileAuthenticationOption Dim provider As SqlProfileProvider Dim inactiveDays As Integer = 90 Public Sub Page_Load() InactiveDaysLabel.Text = inactiveDays.ToString() authOption = GetAuthenticationOption() provider = CType(Profile.Providers("SqlProvider"), SqlProfileProvider) InactiveProfilesLabel.Text = provider.GetNumberOfInactiveProfiles(authOption, _ DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0))).ToString() DeletedMessage.Text = "" End Sub Private Function GetProfiles() As ProfileInfoCollection Dim profiles As ProfileInfoCollection If ShowInactiveCheckBox.Checked Then profiles = provider.FindInactiveProfilesByUserName(authOption, _ UserNameTextBox.Text, _ DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0)), _ currentPage - 1, pageSize, totalProfiles) Else profiles = provider.FindProfilesByUserName(authOption, _ UserNameTextBox.Text, _ currentPage - 1, pageSize, totalProfiles) End If Return profiles End Function Private Sub ShowProfiles() If UserNameTextBox.Text.Trim() = "" Then Msg.Text = "Please specify a user name." NavigationPanel.Visible = False ProfileGrid.Visible = False Return End If Msg.Text = "" ProfileGrid.Visible = True ProfileGrid.DataSource = GetProfiles() totalPages = ((totalProfiles - 1) \ pageSize) + 1 ' Ensure that we do not navigate past the last page of users. If currentPage > totalPages Then currentPage = totalPages ShowProfiles() Return End If ProfileGrid.DataBind() TotalProfilesLabel.Text = totalProfiles.ToString() 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 ShowProfiles() End Sub Public Sub PreviousButton_OnClick(sender As Object, args As EventArgs) currentPage = Convert.ToInt32(CurrentPageLabel.Text) currentPage -= 1 ShowProfiles() End Sub Public Sub GoButton_OnClick(sender As Object, args As EventArgs) currentPage = 1 ShowProfiles() End Sub Public Sub ShowInactiveCheckBox_OnCheckedChanged(sender As Object, args As EventArgs) ShowProfiles() End Sub Public Sub DeleteButton_OnClick(sender As Object, args As EventArgs) provider.DeleteProfiles(GetProfiles()) DeletedMessage.Text = totalProfiles.ToString() & " profiles deleted." ShowProfiles() End Sub Public Sub AuthenticationOptionListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs) authOption = GetAuthenticationOption() ShowProfiles() 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 </script> <html> <head> <title>Sample Find Profiles</title> </head> <body> <form runat="server"> <h3>Profile List</h3> <asp:Label id="Msg" runat="Server" ForeColor="red" /><BR> <table border=0 cellpadding=3 cellspacing=3> <tr> <td valign="top">UserName to Search for</td> <td valign="top" colspan="2"> <asp:TextBox id="UserNameTextBox" runat="server" /> <asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><BR> </td> </tr> <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> <td valign="top"><asp:CheckBox id="ShowInactiveCheckBox" Checked="False" AutoPostBack="True" runat="server" OnCheckedChanged="ShowInactiveCheckBox_OnCheckedChanged" /> Show profiles inactive for <asp:Label id="InactiveDaysLabel" runat="server" /> days only.<BR> There are <asp:Label id="InactiveProfilesLabel" runat="server" /> inactive profiles. </td> </tr> <tr> <td><asp:Button id="DeleteButton" runat="server" Text="Delete Profiles" OnClick="DeleteButton_OnClick" /> <BR><i>(based on search results)</i> </td> <td valign="top"><asp:Label id="DeletedMessage" runat="server" /></td> </tr> </table> <asp:Panel id="NavigationPanel" Visible="False" runat="server"> <asp:Label id="TotalProfilesLabel" runat="server" /> profile(s) found. <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:DataGrid id="ProfileGrid" runat="server" CellPadding="2" CellSpacing="1" Gridlines="Both"> <HeaderStyle BackColor="darkblue" ForeColor="white" /> </asp:DataGrid> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Profile" %> <script runat="server"> int pageSize = 5; int totalProfiles; int totalPages; int currentPage = 1; ProfileAuthenticationOption authOption; SqlProfileProvider provider; int inactiveDays = 90; public void Page_Load() { InactiveDaysLabel.Text = inactiveDays.ToString(); authOption = GetAuthenticationOption(); provider = (SqlProfileProvider)Profile.Providers["SqlProvider"]; InactiveProfilesLabel.Text = provider.GetNumberOfInactiveProfiles(authOption, DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0))).ToString(); DeletedMessage.Text = ""; } private ProfileInfoCollection GetProfiles() { ProfileInfoCollection profiles; if (ShowInactiveCheckBox.Checked) { profiles = provider.FindInactiveProfilesByUserName(authOption, UserNameTextBox.Text, DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)), currentPage - 1, pageSize, out totalProfiles); } else { profiles = provider.FindProfilesByUserName(authOption, UserNameTextBox.Text, currentPage - 1, pageSize, out totalProfiles); } return profiles; } private void ShowProfiles() { if (UserNameTextBox.Text.Trim() == "") { Msg.Text = "Please specify a user name."; NavigationPanel.Visible = false; ProfileGrid.Visible = false; return; } Msg.Text = ""; ProfileGrid.Visible = true; ProfileGrid.DataSource = GetProfiles(); totalPages = ((totalProfiles - 1) / pageSize) + 1; // Ensure that we do not navigate past the last page of users. if (currentPage > totalPages) { currentPage = totalPages; ShowProfiles(); return; } ProfileGrid.DataBind(); TotalProfilesLabel.Text = totalProfiles.ToString(); 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++; ShowProfiles(); } public void PreviousButton_OnClick(object sender, EventArgs args) { currentPage = Convert.ToInt32(CurrentPageLabel.Text); currentPage--; ShowProfiles(); } public void GoButton_OnClick(object sender, EventArgs args) { currentPage = 1; ShowProfiles(); } public void ShowInactiveCheckBox_OnCheckedChanged(object sender, EventArgs args) { ShowProfiles(); } public void DeleteButton_OnClick(object sender, EventArgs args) { provider.DeleteProfiles(GetProfiles()); DeletedMessage.Text = totalProfiles.ToString() + " profiles deleted."; ShowProfiles(); } public void AuthenticationOptionListBox_OnSelectedIndexChanged(object sender, EventArgs args) { authOption = GetAuthenticationOption(); ShowProfiles(); } 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; } </script> <html> <head> <title>Sample: Find Profiles</title> </head> <body> <form runat="server"> <h3>Profile List</h3> <asp:Label id="Msg" runat="Server" ForeColor="red" /><BR> <table border=0 cellpadding=3 cellspacing=3> <tr> <td valign="top">UserName to Search for:</td> <td valign="top" colspan="2"> <asp:TextBox id="UserNameTextBox" runat="server" /> <asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><BR> </td> </tr> <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> <td valign="top"><asp:CheckBox id="ShowInactiveCheckBox" Checked="false" AutoPostBack="true" runat="server" OnCheckedChanged="ShowInactiveCheckBox_OnCheckedChanged" /> Show profiles inactive for <asp:Label id="InactiveDaysLabel" runat="server" /> days only.<BR> There are <asp:Label id="InactiveProfilesLabel" runat="server" /> inactive profiles. </td> </tr> <tr> <td><asp:Button id="DeleteButton" runat="server" Text="Delete Profiles" OnClick="DeleteButton_OnClick" /> <BR><i>(based on search results)</i> </td> <td valign="top"><asp:Label id="DeletedMessage" runat="server" /></td> </tr> </table> <asp:Panel id="NavigationPanel" Visible="false" runat="server"> <asp:Label id="TotalProfilesLabel" runat="server" /> profile(s) found. <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:DataGrid id="ProfileGrid" runat="server" CellPadding="2" CellSpacing="1" Gridlines="Both"> <HeaderStyle BackColor="darkblue" ForeColor="white" /> </asp:DataGrid> </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.FindInactiveProfilesByUserName メソッドのページへのリンク