2015-01-15 9 views
0

DirSync control을 설정하려고합니다. 이전에는 System.DirectoryServices.Protocols에서 찾은 메소드를 [성공적으로] 사용했지만 반환 된 결과는 부분 객체였습니다. 정의 된 경우에도 homeDrive 속성을 반환 할 수 없었습니다. SearchRequest의 Attributes 속성에 있습니다.S.DS로 DirSync를 시도 할 때 '액세스가 거부되었습니다'

따라서 System.DirectoryServices를 사용하여 some of the documentationexamples 다음에 DirSync를 설정하려고합니다. 나는 (IP 만 액세스) 내 테스트 서버에 연결에 성공, 나는 같은 하나의 OU를 대상으로하고 사용자 검색의 성공 :

그러나
byte[] cookie = null; 
root = new DirectoryEntry(
    "LDAP://[MyIPHere]/OU=test ou,DC=company,DC=com", "username", "password"); 

//Section A - Use this section for a regular search 
DirectorySearcher src = new DirectorySearcher(root); 
src.SearchScope = SearchScope.Subtree; 
src.Filter = "(&(objectClass=user)(sAMAccountName=myuserhere)"; 

//Section B - Use this section for a DirSync 
//src.DirectorySynchronization = new DirectorySynchronization(
    DirectorySynchronizationOptions.IncrementalValues, cookie); 
//src.Filter = "(&(objectCategory=person)(objectClass=user))"; 

//Execute the code whichever section is used 
SearchResultCollection result = src.FindAll(); 

int count = result.Count; 
Console.WriteLine(count.ToString()); 

foreach (SearchResult res in result) 
{ 
    //do things 
} 

, 나는 섹션 B를 사용하려고 섹션 A 대신에, 내가 int 카운트을 설정하고있는 라인에서 에러를 얻는다.

COMException는 액세스가 거부 처리되지 않은

했다 : (나는 예를 들어, 같은 결과에서와 같이 src.DirectorySynchronization의 생성자에 매개 변수를 전달하지 시도).

결과 개체의 속성에 액세스하려고하거나 반복을 시도 할 때만 오류가 발생합니다. 나는 INT 카운트 줄에 중단 점을 설정하고 결과 개체 보면, 나는 결과의 개수의 값 열에서 다음을 참조하십시오

'result.Count'유형

의 예외가 발생했습니다 내 계정이 모두 지정된 OU 및 테스트 도메인 큰에서 (다른 모든 보안 액세스 가능)에 대한 Replicating Directory Changes 보안 액세스 권한이 보장 한

'함께 System.Runtime.InteropServices.COMException'. 나 또한 별도의 도메인 관리자 계정을 사용해 보았습니다.

DirectoryEntry 개체를 생성 할 때 자격 증명을 전달하지 않고 프로덕션 도메인에서 실행하면 동일한 문제가 발생합니다.

다른 검색 결과를 성공적으로 검색 할 수 있다는 것을 고려하면 액세스 문제를 일으키는이 DirectorySynchronization에 대해서는 무엇이 있습니까? src.FindAll()에 전화하면 왜 그런 일이 발생하지 않습니까?

(나는 다른 옵션에 열려있어,하지만 난 그것 때문에 다시 전체 객체를 반환하고, 내 말에 추가 코딩을 요구하는 지금의의 uSNChanged 추적 방법을 피하기 위해 싶습니다.)

답변

1

기본 DirSync 검색의 경우 디렉터리 파티션의 루트 (예 : "DC = company, DC = com")가 있어야합니다.

표의 "검색 기준"http://msdn.microsoft.com/en-us/library/ms677626(v=vs.85).aspx
을 참조하십시오.

디렉터리 동기화에 대한 좀 더 좋은 C# 예제 :

http://msdn.microsoft.com/en-us/magazine/cc188700.aspx#S1
항을 참조 "DirectorySearcher와 함께 귀하의 방법을 찾기".

OU/컨테이너에서만 변경 내용을 추적하려면 예, USNChange를 사용해야합니다.

관련 문제