Condividi tramite


ProfileManager.FindInactiveProfilesByUserName Metodo

Definizione

Recupera le informazioni sul profilo per i profili in cui si è verificata l'ultima data dell'attività in o prima di una data e un'ora specificate e il nome utente per il profilo corrisponde a un nome specificato.

Overload

Nome Descrizione
FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime, Int32, Int32, Int32)

Recupera le informazioni sul profilo nelle pagine di dati per i profili in cui si è verificata l'ultima data dell'attività in corrispondenza o prima della data e dell'ora specificate e il nome utente per il profilo corrisponde al nome specificato.

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime)

Recupera le informazioni sul profilo per tutti i profili in cui si è verificata l'ultima data dell'attività in o prima della data e dell'ora specificate e il nome utente per il profilo corrisponde al nome specificato.

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime, Int32, Int32, Int32)

Recupera le informazioni sul profilo nelle pagine di dati per i profili in cui si è verificata l'ultima data dell'attività in corrispondenza o prima della data e dell'ora specificate e il nome utente per il profilo corrisponde al nome specificato.

public:
 static System::Web::Profile::ProfileInfoCollection ^ FindInactiveProfilesByUserName(System::Web::Profile::ProfileAuthenticationOption authenticationOption, System::String ^ usernameToMatch, DateTime userInactiveSinceDate, int pageIndex, int pageSize, [Runtime::InteropServices::Out] int % totalRecords);
public static System.Web.Profile.ProfileInfoCollection FindInactiveProfilesByUserName(System.Web.Profile.ProfileAuthenticationOption authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords);
static member FindInactiveProfilesByUserName : System.Web.Profile.ProfileAuthenticationOption * string * DateTime * int * int * int -> System.Web.Profile.ProfileInfoCollection
Public Shared Function FindInactiveProfilesByUserName (authenticationOption As ProfileAuthenticationOption, usernameToMatch As String, userInactiveSinceDate As DateTime, pageIndex As Integer, pageSize As Integer, ByRef totalRecords As Integer) As ProfileInfoCollection

Parametri

authenticationOption
ProfileAuthenticationOption

Uno dei ProfileAuthenticationOption valori, specificando se vengono restituiti profili anonimi, autenticati o entrambi i tipi.

usernameToMatch
String

Nome utente per il quale eseguire la ricerca.

userInactiveSinceDate
DateTime

Oggetto DateTime che identifica i profili utente considerati inattivi. Se l'oggetto LastActivityDate di un profilo utente si verifica in data e ora precedenti a questa data e ora, il profilo viene considerato inattivo.

pageIndex
Int32

Indice della pagina dei risultati da restituire. pageIndex è in base zero.

pageSize
Int32

Dimensioni della pagina dei risultati da restituire.

totalRecords
Int32

Quando termina, questo metodo contiene un numero intero che identifica il numero totale di profili. Questo parametro viene passato non inizializzato.

Restituisce

Oggetto ProfileInfoCollection contenente le informazioni sul profilo utente per i profili inattivi in cui il nome utente corrisponde al parametro specificato usernameToMatch .

Eccezioni

usernameToMatch è null.

usernameToMatch è una stringa vuota ("").

oppure

pageIndex è minore di zero.

oppure

pageSize è minore di 1.

oppure

pageIndex moltiplicato per pageSize è maggiore di Int32.MaxValue.

Esempio

L'esempio di codice seguente consente a un utente di fornire un usernameToMatch valore e un ProfileAuthenticationOption valore e di recuperare le informazioni sul profilo per tutti i profili corrispondenti. L'esempio consente all'utente di specificare se restituire esclusivamente profili inattivi. Se l'utente specifica solo profili inattivi, viene chiamato il FindInactiveProfilesByUserName metodo ; in caso contrario, viene chiamato il FindProfilesByUserName metodo .

Importante

Questo esempio contiene una casella di testo che accetta l'input dell'utente, che rappresenta una potenziale minaccia per la sicurezza. Per impostazione predefinita, ASP.NET pagine Web verificare che l'input dell'utente non includa elementi SCRIPT o HTML. Per altre informazioni, vedere Cenni preliminari sugli exploit di script.

<%@ 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;

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, 
                   UserNameTextBox.Text, 
                   DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)),
                   currentPage - 1, pageSize, out totalProfiles);
  }
  else
  {
    profiles = ProfileManager.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)
{
  ProfileManager.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>
<%@ 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>

Commenti

Il FindInactiveProfilesByUserName metodo viene usato per recuperare le informazioni sul profilo per i profili utente inutilizzati per l'applicazione specificata dall'attributo applicationName nel file di configurazione. Questo metodo recupererà solo i profili per i quali il nome utente corrisponde al valore del parametro fornito usernameToMatch . Usare il authenticationOption parametro per specificare se si desidera cercare solo profili anonimi, solo profili autenticati o tutti i profili. Dei profili di ricerca, viene restituito qualsiasi profilo con un LastActivityDate oggetto che si verifica su o prima del valore del parametro specificato userInactiveSinceDate .

I risultati restituiti da FindInactiveProfilesByUserName sono vincolati dai pageIndex parametri e pageSize . Il pageSize parametro identifica il numero massimo di ProfileInfo oggetti da restituire nell'insieme ProfileInfoCollection . Il pageIndex parametro identifica la pagina dei risultati da restituire; 0 identifica la prima pagina. Il totalRecords parametro è un out parametro impostato sul numero totale di profili utente inattivi per l'oggetto configurato applicationNamein base ai authenticationOption parametri e userInactiveSinceDate . Ad esempio, se sono presenti 13 utenti per l'oggetto configurato applicationNamee il pageIndex valore è 1 con un pageSize valore pari a 5, il ProfileInfoCollection valore restituito conterrà il sesto tramite il decimo profilo inattivo. Il totalRecords parametro verrà impostato su 13.

Si noti che il provider di profili può supportare caratteri jolly nel usernameToMatch parametro . Ad esempio, il FindInactiveProfilesByUserName metodo della SqlProfileProvider classe supporta caratteri jolly nel usernameToMatch parametro .

Il FindInactiveProfilesByUserName metodo chiama il FindInactiveProfilesByUserName metodo del provider di profili predefinito. Il provider di profili predefinito viene specificato usando l'attributo defaultProvider dell'elemento di configurazione del profilo . Se il profilo utente contiene proprietà gestite da un provider di profili diverso dal provider predefinito, non viene eseguita la ricerca nell'origine dati per l'altro provider di profili. Per trovare profili inattivi gestiti da un provider di profili diverso dal provider predefinito, ottenere un riferimento al provider di profili usando la Providers proprietà e chiamare direttamente il FindInactiveProfilesByUserName metodo del provider.

Vedi anche

Si applica a

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime)

Recupera le informazioni sul profilo per tutti i profili in cui si è verificata l'ultima data dell'attività in o prima della data e dell'ora specificate e il nome utente per il profilo corrisponde al nome specificato.

public:
 static System::Web::Profile::ProfileInfoCollection ^ FindInactiveProfilesByUserName(System::Web::Profile::ProfileAuthenticationOption authenticationOption, System::String ^ usernameToMatch, DateTime userInactiveSinceDate);
public static System.Web.Profile.ProfileInfoCollection FindInactiveProfilesByUserName(System.Web.Profile.ProfileAuthenticationOption authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate);
static member FindInactiveProfilesByUserName : System.Web.Profile.ProfileAuthenticationOption * string * DateTime -> System.Web.Profile.ProfileInfoCollection
Public Shared Function FindInactiveProfilesByUserName (authenticationOption As ProfileAuthenticationOption, usernameToMatch As String, userInactiveSinceDate As DateTime) As ProfileInfoCollection

Parametri

authenticationOption
ProfileAuthenticationOption

Uno dei valori di ProfileAuthenticationOption enumerazione, specificando se vengono restituiti profili anonimi, autenticati o entrambi i tipi.

usernameToMatch
String

Nome utente per il quale eseguire la ricerca.

userInactiveSinceDate
DateTime

Oggetto DateTime che identifica i profili utente considerati inattivi. Se l'oggetto LastActivityDate di un profilo utente si verifica in data e ora precedenti a questa data e ora, il profilo viene considerato inattivo.

Restituisce

Oggetto ProfileInfoCollection contenente le informazioni sul profilo utente per i profili inattivi in cui il nome utente corrisponde al parametro specificato usernameToMatch .

Eccezioni

usernameToMatch è null.

usernameToMatch è una stringa vuota ("").

Esempio

L'esempio di codice seguente consente a un utente di specificare un usernameToMatch valore e un ProfileAuthenticationOption valore di enumerazione e di recuperare le informazioni sul profilo per tutti i profili corrispondenti. L'esempio consente all'utente di specificare se restituire solo profili inattivi. Se l'utente specifica solo profili inattivi, viene chiamato il FindInactiveProfilesByUserName metodo ; in caso contrario, viene chiamato il FindProfilesByUserName metodo .

Importante

Questo esempio contiene una casella di testo che accetta l'input dell'utente, che rappresenta una potenziale minaccia per la sicurezza. Per impostazione predefinita, ASP.NET pagine Web verificare che l'input dell'utente non includa elementi SCRIPT o HTML. Per altre informazioni, vedere Cenni preliminari sugli exploit di script.

<%@ 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">

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, 
                 UserNameTextBox.Text, 
                 DateTime.Now.Subtract(new TimeSpan(inactiveDays, 0, 0, 0)));
  }
  else
  {
    profiles = ProfileManager.FindProfilesByUserName(authOption, 
                 UserNameTextBox.Text);
  }

  return profiles;
}

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

  ProfileGrid.DataSource = GetProfiles();
  ProfileGrid.DataBind();
}

public void GoButton_OnClick(object sender, EventArgs args)
{
  ShowProfiles();
}

public void ShowInactiveCheckBox_OnCheckedChanged(object sender, EventArgs args)
{
  ShowProfiles();
}

public void DeleteButton_OnClick(object sender, EventArgs args)
{
  DeletedMessage.Text = ProfileManager.DeleteProfiles(GetProfiles()).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:DataGrid id="ProfileGrid" runat="server"
                CellPadding="2" CellSpacing="1"
                Gridlines="Both">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
  </asp:DataGrid>

</form>

</body>
</html>
<%@ 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 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)))
  Else
    profiles = ProfileManager.FindProfilesByUserName(authOption, _
                 UserNameTextBox.Text)
  End If

  Return profiles
End Function

Private Sub ShowProfiles()
  If UserNameTextBox.Text.Trim() = "" Then  
    Msg.Text = "Please specify a user name."
    ProfileGrid.Visible = False
    Return
  End If
  
  Msg.Text = ""
  ProfileGrid.Visible = True

  ProfileGrid.DataSource = GetProfiles()
  ProfileGrid.DataBind()
End Sub

Public Sub GoButton_OnClick(sender As Object, args As EventArgs)
  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)
  DeletedMessage.Text = ProfileManager.DeleteProfiles(GetProfiles()).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:DataGrid id="ProfileGrid" runat="server"
                CellPadding="2" CellSpacing="1"
                Gridlines="Both">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
  </asp:DataGrid>

</form>

</body>
</html>

Commenti

Il FindInactiveProfilesByUserName metodo viene usato per recuperare le informazioni sul profilo per tutti i profili utente inutilizzati per l'applicazione specificata dall'attributo applicationName nel file di configurazione. Questo metodo recupererà solo i profili per i quali il nome utente del profilo corrisponde al valore del parametro specificato usernameToMatch . Usare il authenticationOption parametro per specificare se si desidera cercare solo profili anonimi, solo profili autenticati o tutti i profili. Dei profili di ricerca, qualsiasi profilo con un LastActivityDate oggetto che si verifica su o prima che venga restituito il valore del parametro specificato userInactiveSinceDate .

È possibile recuperare queste informazioni nelle pagine di dati usando l'overload per il FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime, Int32, Int32, Int32) metodo che accetta parametri e pageSize aggiuntivipageIndex.

Annotazioni

Il provider di profili può supportare caratteri jolly nel usernameToMatch parametro . Ad esempio, il FindInactiveProfilesByUserName metodo della SqlProfileProvider classe supporta caratteri jolly nel usernameToMatch parametro .

Il FindInactiveProfilesByUserName metodo chiama il ProfileProvider.FindInactiveProfilesByUserName metodo del provider di profili predefinito. Il provider di profili predefinito viene specificato usando l'attributo defaultProvider dell'elemento di configurazione del profilo . Se il profilo utente contiene proprietà gestite da un provider di profili diverso dal provider predefinito, non viene eseguita la ricerca nell'origine dati per l'altro provider di profili. Per trovare profili inattivi gestiti da un provider di profili diverso dal provider predefinito, ottenere un riferimento al provider di profili usando la Providers proprietà e chiamare direttamente il FindInactiveProfilesByUserName metodo del provider.

Vedi anche

Si applica a