2009-08-11 52 views
2

我需要針對Exchange Server全局地址列表搜索包含其名稱中的某個文本字符串的所有用戶。該操作將從ASP.NET應用程序執行。請注意,GAL是必需的(不是Active Directory),因爲它包含跨域的用戶。這也是客戶要求的。查詢跨域域用戶的全局地址列表(GAL)

我一直在尋找Exchange Web服務和Outlook Web Access方法。但是,在我的組織中都不能配置,因此我需要知道哪些選項是正確的,然後纔會要求基礎結構對其進行配置。

Exchange Web服務

我希望能夠使用Exchange Web服務的方法ResolveNames。它的文檔聲明:

首先搜索Active Directory,然後搜索用戶的聯繫人文件夾。

它似乎暗示此方法只會從當前域返回用戶。它是否正確?

的Outlook Web Access

我發現另一種選擇是GALFind。這看起來很完美,但this article表示它是不支持。它被確認爲不再可用於這篇文章Technet

任何人都可以請給這些或任何其他選項的建議?

回答

3

通過從林根開始查詢,可以跨域查詢。以下是我最終使用的代碼:

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 
    } 
} 
+1

+1用於發佈您的解決方案 – 2011-07-01 05:01:37