This documentation is archived and is not being maintained.

ProfileManager.FindInactiveProfilesByUserName Method (ProfileAuthenticationOption, String, DateTime)

Retrieves profile information for all 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 static ProfileInfoCollection FindInactiveProfilesByUserName(
	ProfileAuthenticationOption authenticationOption,
	string usernameToMatch,
	DateTime userInactiveSinceDate


Type: System.Web.Profile.ProfileAuthenticationOption
One of the ProfileAuthenticationOption enumeration values, specifying whether anonymous, authenticated, or both types of profiles are returned.
Type: System.String
The user name for which to search.
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.

Return Value

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


usernameToMatch is null.


usernameToMatch is an empty string ("").

The FindInactiveProfilesByUserName method is used to retrieve profile information for all unused user profiles for the application specified by the applicationName attribute in the configuration file. This method will only retrieve profiles for which the profile user name 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 on or before the specified userInactiveSinceDate parameter value is returned.

You can retrieve this information in pages of data using the overload for the FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime, Int32, Int32, Int32) method that takes additional pageIndex and pageSize parameters.


Your profile provider may support wildcard characters in the usernameToMatch parameter. For example, the FindInactiveProfilesByUserName method of the SqlProfileProvider class supports wildcard characters in the usernameToMatch parameter.

The FindInactiveProfilesByUserName method calls the ProfileProvider.FindInactiveProfilesByUserName method of the default profile provider. The default profile provider is specified using the defaultProvider attribute of the profile configuration element. If the user profile contains properties that are managed by a profile provider other than the default provider, the data source for the other profile provider is not searched. To find inactive profiles that are managed by a profile provider other than the default provider, obtain a reference to the profile provider using the Providers property and call the FindInactiveProfilesByUserName method of the provider directly.

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

Security noteSecurity Note

This example contains a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Profile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<script runat="server">

ProfileAuthenticationOption authOption;

int inactiveDays = 90;

public void Page_Load()
  InactiveDaysLabel.Text = inactiveDays.ToString();
  authOption = GetAuthenticationOption();

  InactiveProfilesLabel.Text = ProfileManager.GetNumberOfInactiveProfiles(authOption,
                                 DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0))).ToString();

  DeletedMessage.Text = "";

private ProfileInfoCollection GetProfiles()
  ProfileInfoCollection profiles;

  if (ShowInactiveCheckBox.Checked)
    profiles = ProfileManager.FindInactiveProfilesByUserName(authOption, 
                 DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)));
    profiles = ProfileManager.FindProfilesByUserName(authOption, 

  return profiles;

private void ShowProfiles()
  if (UserNameTextBox.Text.Trim() == "")
    Msg.Text = "Please specify a user name.";
    ProfileGrid.Visible = false;

  Msg.Text = "";
  ProfileGrid.Visible = true;

  ProfileGrid.DataSource = GetProfiles();

public void GoButton_OnClick(object sender, EventArgs args)

public void ShowInactiveCheckBox_OnCheckedChanged(object sender, EventArgs args)

public void DeleteButton_OnClick(object sender, EventArgs args)
  DeletedMessage.Text = ProfileManager.DeleteProfiles(GetProfiles()).ToString() + 
                          " profiles deleted.";

public void AuthenticationOptionListBox_OnSelectedIndexChanged(object sender, EventArgs args)
  authOption = GetAuthenticationOption();

private ProfileAuthenticationOption GetAuthenticationOption()
  if (AuthenticationOptionListBox.SelectedItem != null)
    switch (AuthenticationOptionListBox.SelectedItem.Value)
      case "Anonymous":
        return ProfileAuthenticationOption.Anonymous;
      case "Authenticated":
        return ProfileAuthenticationOption.Authenticated;
        return ProfileAuthenticationOption.All;

  return ProfileAuthenticationOption.All;

<html xmlns="" >
<title>Sample: Find Profiles</title>

<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">
      <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 valign="top">Authentication Option</td>
      <td valign="top"><asp:ListBox id="AuthenticationOptionListBox" rows="3" runat="Server"
                         <asp:ListItem value="All" selected="True">All</asp:ListItem>
                         <asp:ListItem value="Authenticated">Authenticated</asp:ListItem>
                         <asp:ListItem value="Anonymous">Anonymous</asp:ListItem>
      <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><asp:Button id="DeleteButton" runat="server" 
                      Text="Delete Profiles" OnClick="DeleteButton_OnClick" />
          <br /><i>(based on search results)</i>
      <td valign="top"><asp:Label id="DeletedMessage" runat="server" /></td>

  <asp:DataGrid id="ProfileGrid" runat="server"
                CellPadding="2" CellSpacing="1"
    <HeaderStyle BackColor="darkblue" ForeColor="white" />



.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.