2008-09-19 7 views
1

J'essaie d'utiliser les services d'annuaire pour ajouter une entrée de répertoire à un serveur openldap. Les exemples que j'ai vus semblent assez simples, mais je continue à recevoir l'erreur "Il y a une violation de dénomination". Que signifie ce message? Comment puis-je le résoudre?VB.Net "Il y a une violation de dénomination" Erreur avec ldap ouvert pour créer l'utilisateur

J'ai inclus le code, fichier ldif utilisé pour créer le conteneur de personne.

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 

Le fichier LDIF:

version: 1 

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

objectClass: organizationalPerson 

objectClass: person 

objectClass: top 

cn: test3 

sn: test3 
+0

S'il vous plaît modifier vos questions pour rendre le code plus lisible. Vous pouvez regarder la faq de formatage si vous ne savez pas comment le faire. –

Répondre

1

Peut-être que vous devez inclure cela?

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

En outre, vérifier quels sont les champs requis pour organizationalPerson et person sont ... peut-être manquant un.

0

Essayez:

Dim entry As New DirectoryEntry("LDAP://ou=alumni", etc.) 
newUser = entry.Children.Add("cn=" + userName, "user") 
Questions connexes