【问题标题】: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。

      马克

      【讨论】:

        猜你喜欢
        • 2017-12-24
        • 1970-01-01
        • 2012-01-01
        • 2018-09-03
        • 2015-02-26
        • 1970-01-01
        • 2015-08-07
        • 2011-04-03
        • 1970-01-01
        相关资源
        最近更新 更多