This documentation is archived and is not being maintained.

ProfileManager.GetAllInactiveProfiles Method (ProfileAuthenticationOption, DateTime)

Retrieves all user profile data for profiles in which the last activity date occurred on or before the specified date and time.

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

public static ProfileInfoCollection GetAllInactiveProfiles(
	ProfileAuthenticationOption authenticationOption,
	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.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 about the inactive profiles.

The GetAllInactiveProfiles method is used to retrieve profile information from the data source for all unused user profiles for the application specified by the applicationName attribute in the configuration file. 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 is returned that has a LastActivityDate that occurs on or before the specified userInactiveSinceDate parameter value.

You can retrieve profile information for inactive user profiles in pages of data using the overload for the GetAllInactiveProfiles method that takes additional pageIndex and pageSize parameters.

The GetAllInactiveProfiles method calls the GetAllInactiveProfiles 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 unused 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 GetAllInactiveProfiles method of the provider directly.

The following code example shows an ASP.NET page that manages inactive profiles. A button is provided to delete all inactive profiles. Whether a profile is considered inactive is based on the date specified for the userInactiveSinceDate parameter.

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 = 120;
int deletedProfiles = 0;

public void Page_Load()
  DeletedMessage.Text = "";

  authOption = GetAuthenticationOption();

  if (!IsPostBack)
    InactiveDaysTextBox.Text = inactiveDays.ToString();

    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;

  ProfileManager.DeleteProfiles(new string[] {username});

  DeletedMessage.Text = "1 profile deleted.";

  // Refresh profile list.


private void GetProfiles()
  ProfileGrid.DataSource = ProfileManager.GetAllInactiveProfiles(authOption,
                               DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)));

public void NextButton_OnClick(object sender, EventArgs args)

public void PreviousButton_OnClick(object sender, EventArgs args)

public void ModifyInactiveDaysButton_OnClick(object sender, EventArgs args)

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;

public void DeleteAllInactiveButton_OnClick(object sender, EventArgs args)
  deletedProfiles = ProfileManager.DeleteInactiveProfiles(authOption, 
                        DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0 ,0)));
  DeletedMessage.Text = deletedProfiles.ToString() + " profiles deleted.";

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

<form id="form1" runat="server">
  <h3>Profile List</h3>

  <table border="0" cellpadding="3" cellspacing="3">
      <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" 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 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><asp:Label id="DeletedMessage" runat="server" /></td>

  <asp:GridView id="ProfileGrid" runat="server" AutoGenerateColumns="false"
                CellPadding="2" CellSpacing="1" Gridlines="None">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
      <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" />



Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

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

.NET Framework

Supported in: 3.5, 3.0, 2.0