1

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

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

当调用 Findone 方法时,我收到“年、月和日参数描述无法表示的日期时间”错误。

错误

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

该字段属于日期/时间类型,所以我知道我收到了一个错误,因为 NULL 字段没有被正确解释为日期/时间字段。 在此处输入图像描述

我的问题是:如何拦截此错误以使其不会崩溃,因此如果该字段为空白,则不会在我身上崩溃。我没有在任何地方定义 LDAP 系统将提供哪些字段,也没有定义存在哪些类型的字段。

我的 LDAPconnection 设置如下

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 字段。

4

1 回答 1

1

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

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

于 2013-06-08T02:32:47.300 回答