VB.NET中的查找使LDAP服务器崩溃

时间:2008-12-08 22:13:34

标签: vb.net ldap

我的DBA已经通知我,我的一个应用程序真的让我们的LDAP服务器陷入困境。我已经多次查看过这段代码了,但我看不出有什么方法可以限制我点击LDAP的次数。所以现在我决定看看我实际获取数据的方式,看看是否有更好的方法。我没有开发我正在使用的实际数据模型,我不确定System.DirectoryServices.Protocols库是什么。

如果对使用.NET LDAP提供程序更熟悉的人可以给我一些建议,我将非常感激。这是我用来在LDAP服务器中查找条目的函数:

    <DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted:=True)> _
    Public Overloads Shared Function GetSearchResultEntry(ByVal connection As LdapConnection, ByVal searchDirectoryPath As String, ByVal filter As String, _
                                          ByVal attributes As String(), ByVal scope As Protocols.SearchScope) As SearchResultEntry

        If connection Is Nothing Then
            Throw New ArgumentNullException("connection", "An ldap connection must be provided in order to search for a directory.")
        End If

        If Strings.IsNullOrBlank(searchDirectoryPath) Then
            Throw New ArgumentException("A directory path must be provided in order to search for a directory.", "searchDirectoryPath")
        End If

        If Strings.IsNullOrBlank(filter) Then
            Throw New ArgumentException("A search filter must be provided in order to search for a directory.", "filter")
        End If

        Dim resp As SearchResponse = CType(connection.SendRequest(New SearchRequest(searchDirectoryPath, filter, scope, attributes)), SearchResponse)

        If resp.Entries.Count > 0 Then
            Return resp.Entries(0)
        End If

        Return Nothing

    End Function

.NET LDAP提供程序可能有点慢吗?如果有人有一些代码示例,说明他们如何在他们的商店中使用LDAP,那将非常棒。

无论如何,提前感谢您的帮助。

谢谢,
CM

1 个答案:

答案 0 :(得分:1)

两件事:

  1. 你只关心一次进入。该代码看起来会返回特定查询的所有结果。您可以尝试寻找单结果查询样式。
  2. 如果做不到这一点,我怀疑你能做多少工作让这个特殊的代码更容易在服务器上运行。您可能会看到是否有某种方法可以不经常调用此函数 - 可能通过缓存结果。