2012-12-20 49 views
9

我正在使用System.DirectoryServices.AccountManagement来提供用户查找功能。C# - 跨多个Active Directory域搜索用户

业务有几个地区的特定AD域:AMR,欧元,JPN等

,欧元域下的作品,但不返回从其他领域(自然)用户:

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"); 

但是它非常非常慢。有关如何提高性能的任何建议?

+0

想通了。 SO会让我回答问题。 –

+0

你可以请发布你做什么来得到这个工作? – FMFF

+0

将端口号添加到域字符串和容器参数使其适用于我,谢谢 – filip

回答

0

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