限制在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