我正在使用.NET 3.5,并且已经构建了一个成功的LDAP查找函数来查询Sun LDAP服务器上的用户数据。
但是,有一条特别的记录(到目前为止)在查找时失败了。
当调用Findone方法时,我会得到一个'年,月和日参数描述一个无法表示的DateTime'错误。
现在,特别是使用LDAP浏览器查看记录,比如Softerrra,我可以看到这个特定记录缺少特定属性中的数据(baLastupdate字段)。
此字段属于日期/时间种类,因此我理解我收到错误,因为NULL字段未被正确解释为日期/时间字段。
我的问题是:我如何拦截此错误,以便它不会崩溃,因此如果该字段为空,则不会崩溃。 我没有定义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
ķ
答案 0 :(得分:1)
您可以使用PropertiesToLoad
属性选择要在搜索中检索的属性。请注意,如果您稍后在GetDirectoryEntry
上调用SearchResult
方法,那么它也可能会崩溃。
您还可以尝试较低级System.DirectoryServices.Protocols
命名空间。