ProfileManager.DeleteProfiles Method (ProfileInfoCollection)
Deletes profile properties and information from the data source for the supplied list of profiles.
Assembly: System.Web (in System.Web.dll)
Parameters
- profiles
-
Type:
System.Web.Profile.ProfileInfoCollection
A ProfileInfoCollection that contains profile information for profiles to be deleted.
| Exception | Condition |
|---|---|
| ArgumentException | profiles has a Count value of zero. - or - One of the ProfileInfo objects in profiles has a UserName that is an empty string ("") or contains a comma. |
| ArgumentNullException |
The DeleteProfiles method deletes all profile information and properties for the specified profiles from the data source for the application specified by the ApplicationName property. The list of profiles to delete is specified using a ProfileInfoCollection that is passed as the profiles parameter. A ProfileInfoCollection can be returned from the GetAllProfiles, GetAllInactiveProfiles, FindProfilesByUserName, and FindInactiveProfilesByUserName methods.
Note that the return value may differ from the Count value for the supplied ProfileInfoCollection. This indicates that some of the profiles in the specified ProfileInfoCollection were already deleted from the data store.
The DeleteProfiles method calls the ProfileProvider.DeleteProfiles method of the default profile provider. The default profile provider is specified using the defaultProvider attribute of the configuration element. If the user profile contains properties that are managed by a profile provider other than the default provider, they are not deleted. To delete profile properties 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 DeleteProfiles method of the provider directly.
The following code example allows a user to search for profiles using the FindProfilesByUserName and FindInactiveProfilesByUserName methods. The user can then delete the returned profiles with a call to the DeleteProfiles method.
Security 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="VB" %> <%@ 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"> Dim pageSize As Integer = 5 Dim totalProfiles As Integer Dim totalPages As Integer Dim currentPage As Integer = 1 Dim authOption As ProfileAuthenticationOption Dim inactiveDays As Integer = 90 Public Sub 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 = "" End Sub Private Function GetProfiles() As ProfileInfoCollection Dim profiles As ProfileInfoCollection If ShowInactiveCheckBox.Checked Then profiles = ProfileManager.FindInactiveProfilesByUserName(authOption, _ UserNameTextBox.Text, _ DateTime.Now.Subtract(New TimeSpan(inactiveDays, 0, 0, 0)), _ currentPage - 1, pageSize, totalProfiles) Else profiles = ProfileManager.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) ProfileManager.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 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>
Available since 2.0
