SqlProfileProvider.FindInactiveProfilesByUserName Método

Definição

Recupera informações de perfil para perfis em que a data da última atividade ocorreu na data e hora especificadas ou antes e em que o nome de usuário do perfil corresponde ao nome especificado.

public override System.Web.Profile.ProfileInfoCollection FindInactiveProfilesByUserName (System.Web.Profile.ProfileAuthenticationOption authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords);

Parâmetros

authenticationOption
ProfileAuthenticationOption

Um dos valores de ProfileAuthenticationOption, especificando se anônimo, autenticado ou ambos os tipos de perfis são retornados.

usernameToMatch
String

O nome de usuário a ser pesquisado.

userInactiveSinceDate
DateTime

Um DateTime que identifica quais perfis de usuário são considerados inativos. Se o LastActivityDate de um perfil do usuário ocorrer nesta data e hora ou antes, o perfil será considerado inativo.

pageIndex
Int32

O índice da página de resultados a serem retornados. pageIndex é baseado em zero.

pageSize
Int32

O tamanho da página de resultados a ser retornada.

totalRecords
Int32

Quando é retornado, este método contém um inteiro que identifica o número total de perfis. Este parâmetro é passado não inicializado.

Retornos

Um ProfileInfoCollection que contém informações do perfil do usuário para perfis inativos em que o nome de usuário corresponde ao parâmetro usernameToMatch fornecido.

Exceções

usernameToMatch é null.

usernameToMatch é uma cadeia de caracteres vazia ("") ou ultrapassa 256 caracteres.

- ou -

pageIndex é menor que zero.

- ou -

pageSize é menor que um.

- ou -

pageIndex multiplicado por pageSize é maior que Int32.MaxValue.

Exemplos

O exemplo de código a seguir permite que um usuário forneça um usernameToMatch valor e um ProfileAuthenticationOption e recupere informações de perfil para quaisquer perfis correspondentes. O exemplo também permite que o usuário especifique se deseja retornar perfis inativos exclusivamente. Se o usuário especificar apenas perfis inativos, o FindInactiveProfilesByUserName método será chamado; caso contrário, o FindProfilesByUserName método será chamado.

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

Comentários

O FindInactiveProfilesByUserName método é usado para recuperar informações de perfil para perfis de usuário não utilizados para o aplicativo especificado pelo applicationName atributo no arquivo de configuração. Esse método só recuperará perfis para os quais o nome de usuário do perfil corresponde ao valor de parâmetro fornecido usernameToMatch . Use o authenticationOption parâmetro para especificar se você deseja que apenas perfis anônimos, apenas perfis autenticados ou todos os perfis sejam pesquisados. Dos perfis pesquisados, qualquer perfil com um LastActivityDate que ocorre antes do valor do parâmetro especificado userInactiveSinceDate ser retornado.

O SqlProfileProvider pesquisa uma correspondência do valor do usernameToMatch parâmetro usando a LIKE palavra-chave e dá suporte a caracteres curinga, como o sinal de porcentagem (%). Por exemplo, se o usernameToMatch parâmetro for definido como "user1", as informações de perfil do perfil com o nome de usuário "user1" serão retornadas, se existirem. Se o usernameToMatch parâmetro for definido como "user%", as informações de perfil para perfis com o nome de usuário "user1", "user2", "user_admin" e assim por diante serão retornadas. Os usuários são retornados na ordem em que seus perfis foram adicionados ao armazenamento de dados.

Os resultados retornados por FindInactiveProfilesByUserName são restritos pelos pageIndex parâmetros e pageSize . O pageSize parâmetro identifica o número máximo de ProfileInfo objetos a serem retornados no ProfileInfoCollection. O pageIndex parâmetro identifica qual página de resultados retornar; 0 identifica a primeira página. O totalRecords parâmetro é um out parâmetro definido como o número total de perfis de usuário inativos para o configurado applicationName, com base nos authenticationOption parâmetros e userInactiveSinceDate . Por exemplo, se houver 13 usuários para o configurado applicationNamee o pageIndex valor for 1 com um pageSize de 5, o ProfileInfoCollection retornado conterá o sexto ao décimo perfis inativos. O totalRecords parâmetro será definido como 13.

Aplica-se a

Produto Versões
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Confira também