2012-08-28 1 views
2

J'essaie d'ajouter une propriété/attribut à une entrée utilisateur dans Active Directory. Je n'ai aucun problème à mettre à jour les valeurs de propriété en utilisant le code suivant.Active Directory Ajout de propriétés utilisateur

string LDAPString = "LDAP://DC=oc,DC=edu"; 
DirectoryEntry ou = new DirectoryEntry(LDAPString, "fakeUsername", "password"); 

DirectorySearcher searcher = new DirectorySearcher(ou); 
searcher.Filter = "sAMAccountName=" + username; 
SearchResult result = searcher.FindOne(); 

DirectoryEntry user = new DirectoryEntry(result.Path, "fakeUsername", "password"); 

user.Properties[propertyName].Value = propertyValue; 

user.CommitChanges(); 

user.Dispose(); 

Cependant lorsque je tente d'ajouter un nouvel élément et appelez CommitChanges() il génère une erreur:

The specified directory service attribute or value does not exist.

Le ExtendedErrorMessage dit le texte suivant:

00000057: LdapErr: DSID-0C090B8A, comment: Error in attribute conversion operation, data 0, v1db1

string propertyName = "test"; 
string propertyValue = "testValue"; 
user.Properties[propertyName].Add(propertyValue); 
user.CommitChanges(); 

J'ai Je sens qu'il me manque quelque chose de simple mais je n'arrive pas à le comprendre.

+3

Cette nouvelle propriété a-t-elle été définie dans Active Directory? Avez-vous étendu le schéma AD? Vous ne pouvez pas définir de nouvelles propriétés arbitraires dans AD ... –

Répondre

0

Je n'ai pas compris qu'une propriété/attribut n'apparaît généralement que s'il est rempli avec une valeur. Comme marc_s fait allusion à la propriété est déjà là dans le schéma, il suffit de le remplir avec une valeur.

Questions connexes