1

我正在尝试使用目录服务将目录条目添加到 openldap 服务器。我看到的示例看起来很简单,但我不断收到错误“存在命名冲突”。这条消息是什么意思?我该如何解决?

我已经包含了用于创建人员容器的代码 ldif 文件。

Public Function Ldap_Store_Manual_Registration(ByVal userName As String, ByVal firstMiddleName As String, ByVal lastName As String, ByVal password As String)

   Dim entry As DirectoryEntry = OpenLDAPconnection()  'OpenLDAPconnection() is DirectoryEntry(domainName, userId, password, AuthenticationTypes.SecureSocketsLayer) )

   Dim newUser As DirectoryEntry

   newUser = entry.Children.Add("ou=alumni", "organizationalUnit") 'also try with newUser = entry.Children.Add("ou=alumni,o=xxxx", "organizationalUnit") , also not working

   SetADProperty(newUser, "objectClass", "organizationalPerson") 
   SetADProperty(newUser, "objectClass", "person") 
   SetADProperty(newUser, "cn", userName)
   SetADProperty(newUser, "sn", userName)

   newUser.CommitChanges()
End Function

Public Shared Sub SetADProperty(ByVal de As DirectoryEntry, _
    ByVal pName As String, ByVal pValue As String)

    'First make sure the property value isnt "nothing"

    If Not pValue Is Nothing Then

        'Check to see if the DirectoryEntry contains this property already
        If de.Properties.Contains(pName) Then 'The DE contains this property

            'Update the properties value
            de.Properties(pName)(0) = pValue

        Else    'Property doesnt exist

            'Add the property and set it's value
            de.Properties(pName).Add(pValue)

        End If

    End If

End Sub

ldif 文件:

version: 1

dn: cn=test3,ou=alumni,o=unimelb

objectClass: organizationalPerson

objectClass: person

objectClass: top

cn: test3

sn: test3 
4

2 回答 2

1

也许你需要包括这个?

SetADProperty(newUser, "objectClass", "top")

此外,请检查必填字段的内容organizationalPerson......person您可能缺少一个。

于 2008-09-19T19:47:32.300 回答
0

尝试:

Dim entry As New DirectoryEntry("LDAP://ou=alumni", etc.)
newUser = entry.Children.Add("cn=" + userName, "user")
于 2009-07-28T18:31:34.737 回答