Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
FindInactiveProfilesByUserName Method

SqlProfileProvider.FindInactiveProfilesByUserName Method

Retrieves profile information for profiles in which the last activity date occurred on or before the specified date and time and the user name for the profile matches the specified name.

Namespace:  System.Web.Profile
Assembly:  System.Web (in System.Web.dll)

public override ProfileInfoCollection FindInactiveProfilesByUserName(
	ProfileAuthenticationOption authenticationOption,
	string usernameToMatch,
	DateTime userInactiveSinceDate,
	int pageIndex,
	int pageSize,
	out int totalRecords
)

Parameters

authenticationOption
Type: System.Web.Profile.ProfileAuthenticationOption

One of the ProfileAuthenticationOption values, specifying whether anonymous, authenticated, or both types of profiles are returned.

usernameToMatch
Type: System.String

The user name for which to search.

userInactiveSinceDate
Type: System.DateTime

A DateTime that identifies which user profiles are considered inactive. If the LastActivityDate of a user profile occurs on or before this date and time, the profile is considered inactive.

pageIndex
Type: System.Int32

The index of the page of results to return. pageIndex is zero-based.

pageSize
Type: System.Int32

The size of the page of results to return.

totalRecords
Type: System.Int32

When this method returns, contains an integer that identifies the total number of profiles. This parameter is passed uninitialized.

Return Value

Type: System.Web.Profile.ProfileInfoCollection
A ProfileInfoCollection containing user profile information for inactive profiles where the user name matches the supplied usernameToMatch parameter.

ExceptionCondition
ArgumentNullException

usernameToMatch is null.

ArgumentException

usernameToMatch is an empty string ("") or exceeds 256 characters.

- or -

pageIndex is less than zero.

- or -

pageSize is less than one.

- or -

pageIndex multiplied by pageSize is larger than MaxValue.

The FindInactiveProfilesByUserName method is used to retrieve profile information for unused user profiles for the application specified by the applicationName attribute in the configuration file. This method will only retrieve profiles for which the user name for the profile matches the supplied usernameToMatch parameter value. Use the authenticationOption parameter to specify whether you want only anonymous profiles, only authenticated profiles, or all profiles to be searched. Of the searched profiles, any profile with a LastActivityDate that occurs before the specified userInactiveSinceDate parameter value is returned.

The SqlProfileProvider searches for a match of the usernameToMatch parameter value using the LIKE keyword and supports wildcard characters, such as the percent (%) sign. For example, if the usernameToMatch parameter is set to "user1", then profile information for the profile with the user name of "user1" is returned, if it exists. If the usernameToMatch parameter is set to "user%", then profile information for profiles with the user name of "user1", "user2", "user_admin", and so on are returned. Users are returned in the order that their profiles were added to the data store.

The results returned by FindInactiveProfilesByUserName are constrained by the pageIndex and pageSize parameters. The pageSize parameter identifies the maximum number of ProfileInfo objects to return in the ProfileInfoCollection. The pageIndex parameter identifies which page of results to return; 0 identifies the first page. The totalRecords parameter is an out parameter that is set to the total number of inactive user profiles for the configured applicationName, based on the authenticationOption and userInactiveSinceDate parameters. For example, if there are 13 users for the configured applicationName, and the pageIndex value is 1 with a pageSize of 5, the ProfileInfoCollection returned will contain the sixth through the tenth inactive profiles. The totalRecords parameter will be set to 13.

The following code example allows a user to supply a usernameToMatch value and a ProfileAuthenticationOption and retrieves profile information for any matching profiles. The example also allows the user to specify whether to return inactive profiles exclusively. If the user specifies only inactive profiles, the FindInactiveProfilesByUserName method is called; otherwise, the FindProfilesByUserName method is called.

<%@ 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;
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 xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Profiles</title>
</head>
<body>

<form id="form1" 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 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:DataGrid id="ProfileGrid" runat="server"
                CellPadding="2" CellSpacing="1"
                Gridlines="Both">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
  </asp:DataGrid>

</form>

</body>
</html>

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0
Show:
© 2015 Microsoft