문제

Exchange Server 전체 주소 목록에 대해 이름에 특정 텍스트 문자열이 포함된 모든 사용자를 검색해야 합니다.이 작업은 ASP.NET 응용 프로그램에서 수행됩니다.GAL에는 도메인 전체의 사용자가 포함되어 있으므로 Active Directory가 아닌 필수입니다.고객이 요청한 사항이기도 합니다.

저는 Exchange Web Services와 Outlook Web Access 방법을 살펴보았습니다.그러나 내 조직에서는 둘 다 구성되지 않을 수 있으므로 인프라에 구성을 요청하기 전에 어떤 옵션이 올바른지 알아야 합니다.

웹 서비스 교환

나는 다음을 사용하기를 희망했다. ResolveNames Exchange 웹 서비스의 메서드입니다.이에 대한 문서에는 다음과 같이 명시되어 있습니다.

Active Directory를 먼저 검색한 다음 사용자의 연락처 폴더를 검색합니다.

이는 이 방법이 현재 도메인의 사용자만 반환한다는 것을 의미하는 것으로 보입니다.이 올바른지?

아웃룩 웹 액세스

내가 찾은 다른 옵션은 GALFind였습니다.이 정도면 완벽해 보이지만 이 기사 이라고 밝혔다 지원되지 않는.더 이상 이용할 수 없는 것으로 확인되었습니다. 테크넷 기사.

누구든지 이 옵션이나 다른 옵션에 대해 조언을 주실 수 있나요?

도움이 되었습니까?

해결책

포리스트 루트에서 쿼리를 시작하여 도메인 전체에 걸쳐 쿼리할 수 있습니다.내가 사용한 코드는 다음과 같습니다.

string filter = "(&(objectCategory=person)(objectClass=user)(name=*" + search + "*))";
var rootEntry = new DirectoryEntry("GC:");
foreach (DirectoryEntry entry in rootEntry.Children)
{
    DirectoryEntry forestEntry = entry;
    DirectorySearcher searcher = new DirectorySearcher
        {
            SearchRoot = forestEntry,
            Filter = filter,
            Sort =
                {
                    Direction = SortDirection.Ascending,
                    PropertyName = "cn"
                }
        };
    searcher.PropertiesToLoad.AddRange(ADProperties.Values.ToArray());
    SearchResultCollection results = searcher.FindAll();
    foreach (SearchResult result in results)
    {
        DirectoryEntry foundEntry = result.GetDirectoryEntry();

        // Do something
    }
}

다른 팁

나는 교환 전문가는 아니지만 당신은 이것을 사용하지 않아도됩니다. 협업 데이터 객체 (CDO) 그렇지 않을 수도 있지만 너무 신속합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top