2012-05-15 3 views
0

Domino 서버에 연결하여 모든 사용자 정보 (이름, 전자 메일 등)를 가져 오려고합니다. 아래의 코드를 실행하려고하면 다음 오류가 발생합니다. { "프로토콜 오류가 발생했습니다. \ r \ n"}C# Domino LDAP 쿼리

나는 LDAP 브라우저에서이 동일한 쿼리를 시도해 보았지만 제대로 작동했습니다. 모든 조언을 부탁드립니다.

DirectorySearcher search = new DirectorySearcher(new DirectoryEntry("LDAP://server:port")); 

     try 
     { 

      search.Filter = "(objectClass=dominoPerson)"; 
      search.PropertiesToLoad.Add("cn"); 
      SearchResultCollection results = search.FindAll(); 

      foreach (SearchResult r in results) 
      { 
       DirectoryEntry de = r.GetDirectoryEntry(); 

       foreach (DirectoryEntry child in de.Children) 
       { 
        Console.WriteLine(child.Name); 
       } 
      } 

      search.Dispose(); 

     } 
     catch (Exception msg) 
     { 
      Console.WriteLine(msg.ToString()); 
     }v 
+0

예외는 무엇입니까? 실제로 검색 결과를 다시 얻나요? 도미노가 실제로 내부적으로 그 속성을 가지고 있지 않은 경우를 대비하여, "PropertiesToLoad"라인을 제거하려고 시도합니다. – dash

+0

PropertiesToLoad를 제거하려고 시도했지만이 줄에서 여전히 같은 오류가 발생했습니다. SearchResultCollection results = search.FindAll(); – Jim

+0

내부 예외가 있습니까? 그것은 내가 실제로 생각하는 연결에서 일어날 수 있습니다. Console.WriteLine 문에서 디버거에 중단 점을 넣고 Exception 개체를 검사합니다. – dash

답변

3

코드에서 인증되지 않은 쿼리를 수행하고 있습니까? 구성 설정에 따라 Domino는 인증되지 않은 쿼리를 모두 거부하거나 반환 할 속성을 제한 할 수 있습니다. 또한, 귀하의 코드가 아니라 귀하의 LDAP 브라우저 연결에서 BaseDN을 지정하고 있습니까?

서버 측에서 최대한 많은 정보를 수집하는 것이 좋습니다. 즉, LDAP 연결 및 요청에 대한 정보를 캡처하기 위해 Domino 서버에서 디버그 로깅을 설정하십시오. 서버 명령 set LDAPDEBUG = 7을 사용하고 ldap 작업을 다시 시작합니다. (출력을 줄이기 위해 3로 설정할 수 있지만, 최대한의 정보를 얻을 수있을 것입니다.)

설정이 끝나면 ldap 브라우저를 열고 Domino 서버의 콘솔을보십시오. (표시된 창 밖으로 스크롤하면 서버의 IBM 기술 지원 폴더에서 로그 정보를 찾을 수 있어야합니다.) 그런 다음 서버 명령 (예 : "show server")을 입력하여 쉽게 볼 수있게하십시오 구분 기호를 누른 다음 코드를 실행하고 콘솔 로그를보십시오. 당신이 당신의 코드의 연결 및 쿼리의 항목에 대한 LDAP 브라우저 연결 및 쿼리에서 콘솔 로그 항목을 비교할 수 있어야한다이 시점에서

. 차이점은 당신을 해결책으로 이끌 것입니다.

0

Autheticationtype.None을 디렉토리 검색에 사용하면 효과가 있습니다.

DirectorySearcher search = new DirectorySearcher(
new DirectoryEntry("LDAP://XXX.XX.XX.XX:","","",AuthenticationTypes.None));