2014-06-17 3 views
1

저는 C# MVC 5를 사용하고 있습니다. 활성 디렉토리에 연결했는데 광고를 반복하여 HTML 양식을 통해 구체적인 사용자를 찾으려고합니다. POST의 결과는 예상되는 것이 아닙니다. 올바른 AMOUNT (숫자)의 검색 결과를 얻지 만 동일한 결과를 출력하고 있습니다. 아래와 같이 총검색 결과에 문제가 있습니다.

enter image description here

2 결과가 정확하지만 단지 조쉬 반다이 크 없다 또한 조쉬 이발소이고. 당신은 다시 만들거나 userAttributes를 정리하지 않는

  /**********Establish Connection********/ 
      DirectoryEntry dir = createDirectoryEntry(); 
      DirectorySearcher search = new DirectorySearcher(dir); 

      /****Refer to class constructor****/ 
      ADUser userAttributes = new ADUser("", "", "", "", "", "", ""); 

      /********Create the List to store results in***************/ 
      List<ADUser> Users = new List<ADUser>(); 
      string DisplayName = "", SAMAccountName = "", Mail = "", Description = "", Division = "", TelephoneNumber = "", FacsimileTelephoneNumber = ""; 

      /*******Filter parameters************/ 
      search.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(anr=" + userName + "*))"; 
      SearchResultCollection searchresult = search.FindAll(); 
      search.PropertiesToLoad.Add("displayname"); 
      search.PropertiesToLoad.Add("SAMAccountName"); 
      search.PropertiesToLoad.Add("Mail"); 
      search.PropertiesToLoad.Add("Description"); 
      search.PropertiesToLoad.Add("TelephoneNumber"); 
      search.PropertiesToLoad.Add("FacsimileTelephoneNumber"); 
      search.PropertiesToLoad.Add("Division"); 

      /*****************Filtering and populating the List****************/  

      if (searchresult != null) 
      { 
       foreach (SearchResult iResult in searchresult) 
       { 
        foreach (string PropertyName in iResult.Properties.PropertyNames) 
        { 
         foreach (Object key in iResult.GetDirectoryEntry().Properties[PropertyName]) 
         { 
          try 
          { 
           switch (PropertyName.ToUpper()) 
           { 
            case "DISPLAYNAME": 
             DisplayName = key.ToString(); 
             userAttributes.Name = DisplayName; 
             break; 

            case "SAMACCOUNTNAME": 
             SAMAccountName = key.ToString(); 
             userAttributes.DomainUserName = SAMAccountName; 
             break; 

            case "MAIL": 
             Mail = key.ToString(); 
             userAttributes.EmailAddress = Mail; 
             break; 

            case "DESCRIPTION": 
             Description = key.ToString(); 
             userAttributes.JobDescription = Description; 
             break; 

            case "TELEPHONENUMBER": 
             TelephoneNumber = key.ToString(); 
             userAttributes.TelephoneNumber = TelephoneNumber; 
             break; 

            case "FACSIMILETELEPHONENUMBER": 
             FacsimileTelephoneNumber = key.ToString(); 
             userAttributes.FaxNumber = FacsimileTelephoneNumber; 
             break; 

            case "DIVISION": 
             Division = key.ToString(); 
             userAttributes.Division = Division; 
             break; 
           } 
          } 
          catch { } 
         } 
        } 

        Users.Add(userAttributes); 
       } 

       return View(Users); 
      } 

      return View(); 
     } 

답변

2

: 다음은 코드입니다.

// not here 
    /****Refer to class constructor****/ 
    // ADUser userAttributes = new ADUser("", "", "", "", "", "", ""); 
    ... 

     foreach (SearchResult iResult in searchresult) 
     { 
      // but here. 
      ADUser userAttributes = new ADUser("", "", "", "", "", "", ""); 

      foreach (string PropertyName in iResult.Properties.PropertyNames) 
      { 
관련 문제