限制在LDAP查询中返回的属性

问题描述:

如何限制通过System.DirectoryServices在LDAP查询中返回的属性?限制在LDAP查询中返回的属性

我一直在使用DirectorySearcher并添加了我想要的属性DirectorySearcher.PropertiesToLoad。问题是这只是确保添加的属性包含在DirectoryEntry.Properties以及一些默认列表中。有什么办法可以指定你想要返回的唯一属性吗?

DirectoryEntry base = new DiectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind); 
DirectorySearcher groupSearcher = new DirectorySearcher(base); 
groupSearcher.Filter = "(objectClass=group)"; 
groupSearcher.PropertiesToLoad.Add("distinguishedName"); 
groupSearcher.PropertiesToLoad.Add("description"); 
foreach (SearchResult groupSr in groupDs.FindAll()) 
... 

里面的foreach循环,当我拿到小组第一的DirectoryEntry有,我可以访问不只是我指定的两个约16个不同的属性(distinguishedName来,说明)

你有限制的东西是将可用的属性/填写您的SearchResult对象 - 您可以直接访问您foreach循环:

DirectoryEntry baseEntry = new DirectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind); 

DirectorySearcher groupSearcher = new DirectorySearcher(baseEntry); 
groupSearcher.Filter = "(objectClass=group)"; 

groupSearcher.PropertiesToLoad.Add("distinguishedName"); 
groupSearcher.PropertiesToLoad.Add("description"); 

foreach (SearchResult groupSr in groupSearcher.FindAll()) 
{ 
    if(groupSr.Properties["description"] != null && groupSr.Properties["description"].Count > 0) 
    { 
     string description = groupSr.Properties["description"][0].ToString(); 
    } 

    ..... 
} 

你不能限制对实际属性- 因此,如果您为每个SearchResult抓取目录条目 - 您可以完全访问所有内容。但整个的一点是,你可以定义你所需要的性能,并在SearchResult直接访问这些没有不必返回到底层DirectoryEntry