다음을 통해 공유


ProfileManager.FindInactiveProfilesByUserName 메서드

정의

마지막 작업 날짜가 지정된 날짜와 시간이거나 그 이전이고 프로필의 사용자 이름이 지정된 이름과 일치하는 프로필의 프로필 정보를 검색합니다.

오버로드

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

마지막 작업 날짜가 지정된 날짜와 시간이거나 그 이전이고 프로필의 사용자 이름이 지정된 이름과 일치하는 프로필의 프로필 정보를 데이터 페이지에서 검색합니다.

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime)

마지막 작업 날짜가 지정된 날짜와 시간이거나 그 이전이고 프로필의 사용자 이름이 지정된 이름과 일치하는 모든 프로필의 프로필 정보를 검색합니다.

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

마지막 작업 날짜가 지정된 날짜와 시간이거나 그 이전이고 프로필의 사용자 이름이 지정된 이름과 일치하는 프로필의 프로필 정보를 데이터 페이지에서 검색합니다.

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

매개 변수

authenticationOption
ProfileAuthenticationOption

ProfileAuthenticationOption 값 중 하나로, 반환되는 프로필이 익명인지, 인증되었는지 또는 두 형식 모두인지를 지정합니다.

usernameToMatch
String

검색할 사용자 이름입니다.

userInactiveSinceDate
DateTime

사용자 프로필이 비활성 상태인지 식별하는 DateTime입니다. 사용자 프로필의 LastActivityDate가 이 일시이거나 그 이전인 경우 해당 프로필은 비활성으로 간주됩니다.

pageIndex
Int32

반환할 결과 페이지의 인덱스입니다. pageIndex는 0부터 시작합니다.

pageSize
Int32

반환할 결과 페이지의 크기입니다.

totalRecords
Int32

이 메서드가 반환될 때 전체 프로필 수를 식별하는 정수가 포함됩니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

반환

사용자 이름이 제공된 usernameToMatch 매개 변수와 일치하는 비활성 프로필에 대한 사용자 프로필 정보가 포함된 ProfileInfoCollection입니다.

예외

usernameToMatch이(가) null인 경우

usernameToMatch가 빈 문자열("")인 경우

또는

pageIndex가 0보다 작은 경우

또는

pageSize 가 1보다 작습니다.

또는

pageIndex 곱한 pageSize 값이 Int32.MaxValue보다 큽습니다.

예제

다음 코드 예제에서는 사용자가 값과 ProfileAuthenticationOption 값을 제공하고 usernameToMatch 일치하는 프로필에 대한 프로필 정보를 검색할 수 있습니다. 이 예제에서는 사용자가 비활성 프로필을 독점적으로 반환할지 여부를 지정할 수 있습니다. 비활성 프로필에만 지정 된 경우는 FindInactiveProfilesByUserName 방법이 고, 그렇지 않으면 호출을 FindProfilesByUserName 메서드가 호출 됩니다.

중요

이 예제에서는 잠재적 보안 위협을 사용자 입력을 허용 하는 텍스트 상자가 포함 되어 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 Script Exploits Overview를 참조하세요.

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

설명

FindInactiveProfilesByUserName 메서드는 지정 된 애플리케이션에 대 한 사용 되지 않는 사용자 프로필에 대 한 프로필 정보를 검색할 데는 applicationName 구성 파일에서 특성입니다. 이 메서드는 사용자 이름이 제공 usernameToMatch 된 매개 변수 값과 일치하는 프로필만 검색합니다. 사용 된 authenticationOption 익명 프로필에 있는지 여부를 지정 하려면 매개 변수는 프로필 또는를 검색할 수 있는 모든 프로필에만 인증 합니다. 검색된 프로필 중 지정된 userInactiveSinceDate 매개 변수 값 또는 그 LastActivityDate 이전에 발생하는 가 있는 모든 프로필이 반환됩니다.

반환한 결과 FindInactiveProfilesByUserName 에 의해 제한 됩니다 합니다 pageIndexpageSize 매개 변수입니다. 매개 변수는 pageSize 컬렉션에서 반환 ProfileInfoCollection 할 최대 개체 수를 ProfileInfo 식별합니다. pageIndex 반환할 결과 페이지를 식별 하는 매개 변수; 첫 번째 페이지를 식별 하는 0입니다. totalRecords 매개 변수는는 out 구성 된 비활성 사용자 프로필의 총 수로 설정 된 매개 변수 applicationName기반으로 합니다 authenticationOptionuserInactiveSinceDate 매개 변수입니다. 예를 들어 13 명의 사용자가 구성 된 경우 applicationName, 및 pageIndex 값이 1을 pageSize 5는 ProfileInfoCollection 반환 된 6 번째부터 10 번째까지의 비활성 프로필을 포함 합니다. totalRecords 매개 변수를 13으로 설정 됩니다.

프로필 공급자는 매개 변수의 usernameToMatch 와일드카드 문자를 지원할 수 있습니다. 예를 들어 클래스의 SqlProfileProvider 메서드는 FindInactiveProfilesByUserName 매개 변수의 usernameToMatch 와일드카드 문자를 지원합니다.

메서드는 FindInactiveProfilesByUserName 기본 프로필 공급자의 메서드를 호출 FindInactiveProfilesByUserName 합니다. 기본 프로필 공급자는 프로필 구성 요소의 특성을 사용하여 defaultProvider 지정됩니다. 사용자 프로필에 기본 공급자가 아닌 프로필 공급자가 관리하는 속성이 포함된 경우 다른 프로필 공급자의 데이터 원본은 검색되지 않습니다. 기본 공급자가 아닌 프로필 공급자가 관리하는 비활성 프로필을 찾으려면 속성을 사용하여 Providers 프로필 공급자에 대한 참조를 얻고 공급자의 메서드를 FindInactiveProfilesByUserName 직접 호출합니다.

추가 정보

적용 대상

FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime)

마지막 작업 날짜가 지정된 날짜와 시간이거나 그 이전이고 프로필의 사용자 이름이 지정된 이름과 일치하는 모든 프로필의 프로필 정보를 검색합니다.

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

매개 변수

authenticationOption
ProfileAuthenticationOption

ProfileAuthenticationOption 열거형 값 중 하나로, 반환되는 프로필이 익명인지, 인증되었는지 또는 두 형식 모두인지를 지정합니다.

usernameToMatch
String

검색할 사용자 이름입니다.

userInactiveSinceDate
DateTime

사용자 프로필이 비활성 상태인지 식별하는 DateTime입니다. 사용자 프로필의 LastActivityDate가 이 일시이거나 그 이전인 경우 해당 프로필은 비활성으로 간주됩니다.

반환

사용자 이름이 제공된 usernameToMatch 매개 변수와 일치하는 비활성 프로필에 대한 사용자 프로필 정보가 포함된 ProfileInfoCollection입니다.

예외

usernameToMatch이(가) null인 경우

usernameToMatch가 빈 문자열("")인 경우

예제

다음 코드 예제에서는 사용자가 값과 ProfileAuthenticationOption 열거형 값을 제공하고 usernameToMatch 일치하는 프로필에 대한 프로필 정보를 검색할 수 있습니다. 샘플에서는 사용자가 비활성 프로필만 반환할지 여부를 지정할 수 있습니다. 비활성 프로필에만 지정 된 경우는 FindInactiveProfilesByUserName 방법이 고, 그렇지 않으면 호출을 FindProfilesByUserName 메서드가 호출 됩니다.

중요

이 예제에서는 잠재적 보안 위협을 사용자 입력을 허용 하는 텍스트 상자가 포함 되어 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 Script Exploits Overview를 참조하세요.

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

설명

FindInactiveProfilesByUserName 메서드는 지정 된 애플리케이션에 대 한 모든 사용 되지 않는 사용자 프로필에 대 한 프로필 정보를 검색할 데는 applicationName 구성 파일에서 특성입니다. 이 메서드는 프로필 사용자 이름이 제공 usernameToMatch 된 매개 변수 값과 일치하는 프로필만 검색합니다. 사용 된 authenticationOption 익명 프로필에 있는지 여부를 지정 하려면 매개 변수는 프로필 또는를 검색할 수 있는 모든 프로필에만 인증 합니다. 검색된 된 프로필을 사용 하 여 프로필을 LastActivityDate 같거나 지정 된 이전에 발생 하는 userInactiveSinceDate 매개 변수 값이 반환 됩니다.

추가 pageIndexpageSize 매개 변수를 사용하는 메서드에 대한 오버로드를 FindInactiveProfilesByUserName(ProfileAuthenticationOption, String, DateTime, Int32, Int32, Int32) 사용하여 데이터 페이지에서 이 정보를 검색할 수 있습니다.

참고

프로필 공급자는 매개 변수의 usernameToMatch 와일드카드 문자를 지원할 수 있습니다. 예를 들어 클래스의 SqlProfileProvider 메서드는 FindInactiveProfilesByUserName 매개 변수의 usernameToMatch 와일드카드 문자를 지원합니다.

메서드는 FindInactiveProfilesByUserName 기본 프로필 공급자의 메서드를 호출 ProfileProvider.FindInactiveProfilesByUserName 합니다. 기본 프로필 공급자는 프로필 구성 요소의 특성을 사용하여 defaultProvider 지정됩니다. 사용자 프로필에 기본 공급자가 아닌 프로필 공급자가 관리하는 속성이 포함된 경우 다른 프로필 공급자의 데이터 원본은 검색되지 않습니다. 기본 공급자가 아닌 프로필 공급자가 관리하는 비활성 프로필을 찾으려면 속성을 사용하여 Providers 프로필 공급자에 대한 참조를 얻고 공급자의 메서드를 FindInactiveProfilesByUserName 직접 호출합니다.

추가 정보

적용 대상