2013-06-20 5 views
0

그래서 나는 LDAP 검색이 작동하지 않는 이유를 알아 내려고 미쳤다.ASP.NET 바인드 및 쿼리 LDAP

private String getDNFromLDAP(String strUID) 
    { 
     String strDN = ""; 

     //Create an LDAP Entry Object 
     DirectoryEntry entry = new DirectoryEntry("LDAP://something.blah.com/cn=people,dc=blah,dc=com"); 
     entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; 
     entry.Username = "cn=myaccount,cn=special,dc=blah,dc=com"; 
     entry.Password = "supersecret"; 

     DirectorySearcher mySearcher = new DirectorySearcher(entry); 
     mySearcher.SearchScope = SearchScope.Subtree; 
     mySearcher.Filter = "(uid=" + strUID + ")"; 
     SearchResult result = mySearcher.FindOne(); 

     int nIndex = result.Path.LastIndexOf("/"); 
     strDN = result.Path.Substring((nIndex + 1)).ToString().TrimEnd(); 

     //Clean up objects 
     entry.Close(); 
     entry.Dispose(); 
     mySearcher.Dispose(); 

     //returns the DN 
     return strDN; 
    } 

나는 (의 ldapsearch로 확인) 내가 존재 검색하고있는 객체를 알고 있지만 내 결과는 빈 돌아 오는 유지합니다. 기본 dn에 문제가 있다고 의심되지만 DirectorySearch가 기본 dn으로 사용하는 것을 확인하는 방법을 모르겠습니다. 어떤 도움이라도 인정 될 것입니다.

답변

0

검색 루트 속성을 사용하여 루트를 설정합니다. 루트는 생성자에서 전달하는 항목으로 설정되므로 항목을 찾을 수없는 이유 일 수 있습니다.

+0

내가 이해하고있는 것처럼 DirectorySearcher 생성자는 내 DirectoryEntry의 값을 사용하고이를 사용하여 searchroot 속성을 설정합니다. http://msdn.microsoft.com/en-us/library/y49s2h23.aspx 나는 잘못 했습니까? – DR913

+0

정확합니다. 내 생각은 이것이 검색 루트이기 때문에 귀하의 검색은 당신이 찾고 있던 항목을 찾을 수 없습니다. 검색 루트를 부모 노드로 변경하고 어떻게 시작하는지 확인할 수 있습니다. –

+0

이 코드와 3 일간의 전투가 끝난 후 사용 권한 문제가 발생했습니다. 검색 루트를 수정하여 그것을 파악했습니다. – DR913