SearchResultCollection的GetDirectoryEntry是否必须再次查询ActiveDirectory? [的DirectoryServices / .NET]

时间:2009-07-16 02:34:37

标签: .net performance active-directory directoryservices

在.net中使用DirectorySearcher的FindAll()方法时,SearchResultCollection的GetDirectoryEntry()方法是否需要另一次访问Active Directory? e.g ....

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()

2 个答案:

答案 0 :(得分:1)

根据文档,它将重新查询AD以获取目录条目。

Reference

  

如果需要,请使用GetDirectoryEntry   看看现场参赛作品而不是   通过返回的条目   DirectorySearcher,或者您想要的时候   在对象上调用一个方法   返回。

     

注意:   在通过DirectorySearcher返回的每个SearchResult上调用GetDirectoryEntry可能会很慢。

答案 1 :(得分:0)

是的,它将返回AD并获取整个DirectoryEntry对象。

如果您想避免这种情况(并且您应该尽可能地避免),请使用DirectorySearcher集合在PropertiesToLoad上指定您真正需要的属性,然后检查SearchResult.Properties这些值 - 将在搜索时返回,并且不需要再往返Active Directory。

马克