C# – 跨多个Active Directory域搜索用户

我正在使用System.DirectoryServices.AccountManagement来提供用户查找function。

该业务有几个特定地区的AD域:AMR,EUR,JPN等。

以下适用于EUR域,但不会返回其他域中的用户(自然):

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=eur,DC=mycorp,DC=com"); var query = new UserPrincipal(GetContext()); query.Name = "*Bloggs*"; var users = new PrincipalSearcher(query).FindAll().ToList(); 

但是,如果我定位整个目录,它不会从任何特定于区域的域返回用户:

 var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=mycorp,DC=com"); 

如何搜索整个目录?

更新

阅读“Active Directory搜索的工作原理”:

http://technet.microsoft.com/en-us/library/cc755809(v=ws.10).aspx

如果我使用端口3268后缀服务器名称,则会搜索全局编录:

 var context = new PrincipalContext(ContextType.Domain, "mycorp.com:3268", "DC=mycorp,DC=com"); 

然而,它非常非常慢。 有关如何提高性能的任何建议?

具有初始通配符(*Bloggs*)将很慢,除非您对属性的元组索引是查询。 默认情况下,AD中没有任何属性具有此设置。 最好不要做初始的通配符。