2016-11-14 7 views
0

LDAP 쿼리에서 일치하는 각 인스턴스에 대해 만들어진 목록을 만들 필요가있는 애플리케이션을 구축하고 있습니다.LDAP LDAP 쿼리의 세부 정보로 목록 채우기

이렇게 작동해야합니다 ... 사용자가 'Smith'에 sn (성)을 검색하면 성이 'Smith'인 모든 사람들의 세부 정보가 목록에 채워집니다.

그런 다음이 목록을 사용하여 사용자가 선택할 수있는 선택 상자의 세부 정보를 생성 한 다음 사용 된 양식에 저장됩니다.

내 솔루션의 여러 응용 프로그램에서이 재사용을 가능하게하기 위해 검색 필드와 검색 값이이 작업에 전달되고 (대다수는 와일드 카드 접미사가 붙을 것임) 목록이 채워집니다. 이 작업이라고하는 페이지는 LDAP 검색에서 필요한 세부 사항을 저장할 수 있습니다. 필요한 경우 무엇이든 이름이나 성을 입력 할 수 있습니다.

제 코드가 올바르게 보이지 않는 것 같습니다. 내 가정은 JS의 기능과 비슷하지만 Visual Studio에서 코드의 일부를 잘못된 것으로 강조하고 있습니다.

여기 내 코드의 다음 코드는 문제를 해결할 수

using System.Collections.Generic; 
using System.DirectoryServices; 

namespace solutionName.Apps.Models 
{ 
    public class LDAP 
    { 
     protected void LDAP_Search(string LDAP_Field, string LDAP_Value) 
     { 
      string _ldapserver = "myLDAPServer"; 
      string _port = "123"; 
      string _username = "myUserName"; 
      string _password = "myPassword"; 
      _ldapserver = "LDAP://" + _ldapserver + ":" + _port; 
      DirectoryEntry entry = new DirectoryEntry(_ldapserver, _username, _password); 
      entry.AuthenticationType = AuthenticationTypes.None; 
      DirectorySearcher deSearch = new DirectorySearcher(entry); 
      deSearch.PropertiesToLoad.Add("fullname"); 
      deSearch.PropertiesToLoad.Add("givenName"); 
      deSearch.PropertiesToLoad.Add("sn"); 
      deSearch.PropertiesToLoad.Add("PersonOUC"); 
      deSearch.PropertiesToLoad.Add("mail"); 
      deSearch.PropertiesToLoad.Add("cn"); 
      deSearch.Filter = "(&(" + LDAP_Field + "=" + LDAP_Value + "))"; 
      var LDAPResponses = new List<LDAP_Search_Model> 
      { // this line is highlighted as incorrect 
       foreach (SearchResult sresult in deSearch.FindAll()) 
       { 
        new LDAP_Search_Model 
        { 
         fName = sresult.Properties["givenName"][0].ToString(), 
         sName = sresult.Properties["sn"][0].ToString(), 
         fullName = sresult.Properties["fullname"][0].ToString(), 
         OUC = sresult.Properties["PersonOUC"][0].ToString(), 
         email = sresult.Properties["mail"][0].ToString(), 
         UIN = sresult.Properties["cn"][0].ToString() 
        }; 
       } 
      }; // this line is also highlighted as incorrect 

     } 
    } 

    public class LDAP_Search_Model 
    { 
     public string UIN { get; set; } 
     public string fName { get; set; } 
     public string sName { get; set; } 
     public string fullName { get; set; } 
     public string OUC { get; set; } 
     public string email { get; set; } 
    } 


} 

답변

1

(같은 잘못된 비주얼 스튜디오에 의해 강조되는 부분 옆에 내가 의견을 넣었습니다).

var LDAPResponses = new List<LDAP_Search_Model>(); 
foreach (SearchResult sresult in deSearch.FindAll()) 
{ 
    LDAPResponses.Add(new LDAP_Search_Model 
    { 
     //... 
    }); 
};