查询LDAP服务器时,NET目录服务引发错误(与AD无关)

时间:2013-06-06 15:06:06

标签: .net vb.net ldap directoryservices

我正在使用.NET 3.5,并且已经构建了一个成功的LDAP查找函数来查询Sun LDAP服务器上的用户数据。

但是,有一条特别的记录(到目前为止)在查找时失败了。

当调用Findone方法时,我会得到一个'年,月和日参数描述一个无法表示的DateTime'错误。

Error

现在,特别是使用LDAP浏览器查看记录,比如Softerrra,我可以看到这个特定记录缺少特定属性中的数据(baLastupdate字段)。

此字段属于日期/时间种类,因此我理解我收到错误,因为NULL字段未被正确解释为日期/时间字段。 enter image description here

我的问题是:我如何拦截此错误,以便它不会崩溃,因此如果该字段为空,则不会崩溃。 我没有定义LDAP系统将提供哪些字段,也没有定义哪种字段。

我的LDAP连接设置如下

Public Class LDAPDirectorySearcher
Private Shared LDAPDirEntry As System.DirectoryServices.DirectoryEntry
Private Shared LDAPDirSearcher As DirectorySearcher

Public Shared Function DirSearcherSetup() As DirectorySearcher
    Try
        LDAPDirEntry = New DirectoryEntry
        LDAPDirEntry.Path = "LDAP://aaaa.bbbbb.ccccc.com/ou=people"
        LDAPDirEntry.Username = "yyyyyyyyyyy"
        LDAPDirEntry.Password = "xxxxxx"
        LDAPDirEntry.AuthenticationType = AuthenticationTypes.FastBind

        LDAPDirSearcher = New DirectorySearcher(LDAPDirEntry)
        LDAPDirSearcher.CacheResults = True

    Catch ex As Exception

    End Try
    Return LDAPDirSearcher

End Function

认证或设置没有任何问题(它适用于+ 100K其他记录)但是当这个日期/时间字段中没有数据时,它会以某种方式崩溃。我想要克服这个NULL字段。

tnxs

ķ

1 个答案:

答案 0 :(得分:1)

您可以使用PropertiesToLoad属性选择要在搜索中检索的属性。请注意,如果您稍后在GetDirectoryEntry上调用SearchResult方法,那么它也可能会崩溃。

您还可以尝试较低级System.DirectoryServices.Protocols命名空间。