如何通过System.DirectoryServices限制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())
...
当我获得组DirectoryEntry时,在foreach循环内部有大约16种不同的属性,我可以访问的不仅仅是我指定的两个属性(distinguishedName,description)
答案 0 :(得分:2)
您要限制的是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();
}
.....
}
您无法限制实际DirectoryEntry
的属性 - 因此,如果您获取每个SearchResult
的目录条目 - 您可以完全访问所有内容。但重点是,您可以定义所需的属性,并在SearchResult
上直接访问 , 必须返回基础{{ 1}}