【问题标题】:Does SearchResultCollection's GetDirectoryEntry have to query ActiveDirectory again? [DirectoryServices/.net]SearchResultCollection 的 GetDirectoryEntry 是否必须再次查询 ActiveDirectory? [目录服务/.net]
【发布时间】:2009-07-16 02:34:37
【问题描述】:
在 .net 中使用 DirectorySearcher 的 FindAll() 方法时,SearchResultCollection 的 GetDirectoryEntry() 方法是否需要再次访问 Active Directory?比如……
Dim src As SearchResultCollection
Dim ds As New DirectorySearcher
' code to setup DirectorySearcher
' go to Active Directory and fill collection with results
src = ds.FindAll()
'...later on in code or whatever
' does the next line of code require another trip to Active Directory?
Dim de As DirectoryEntry = src.item(0).GetDirectoryEntry()
【问题讨论】:
标签:
.net
performance
active-directory
directoryservices
【解决方案1】:
根据文档,它将重新查询 AD 以获取目录条目。
Reference
在需要时使用 GetDirectoryEntry
查看实时条目而不是
通过返回的条目
DirectorySearcher,或者当你想要
调用对象上的方法
返回。
注意:
对通过 DirectorySearcher 返回的每个 SearchResult 调用 GetDirectoryEntry 可能会很慢。
【解决方案2】:
是的,它会返回 AD 并获取整个 DirectoryEntry 对象。
如果您想避免这种情况(并且您应该尽可能),请使用 PropertiesToLoad 集合在您的 DirectorySearcher 上指定您真正需要的属性,然后检查 SearchResult.Properties 中的这些值 - 这些将是与搜索一起返回,并且不需要再次往返 Active Directory。
马克