2016-05-14 3 views
0

J'utilise blow code pour créer un compte/utilisateur dans AD LDS à partir de mon client machine (bureau virtuel) local. Dans mon code local ci-dessous fonctionne bien Mais après le déploiement du code sur un autre serveur qui est différent de l'endroit où AD LDS est installé, il renvoie l'erreur "Il n'y a aucun objet sur le serveur".Erreur AD LDS "Il n'y a pas un tel objet sur le serveur"

Var host = "Hostname";// soemthing like SV1DCVDEVDB789 where AD LDS is instaed 
var port = 389;//Port Number 
var machineName = string.Format("{0}:{1}", host, port); 
var container = "CN=PSExtUser,CN=PSADLDSPartition1,DC=PS,DC=COM"; 
var principalContext = new PrincipalContext(ContextType.ApplicationDirectory, machineName, container); 

//Check id user already exist 

UserPrincipal usr = UserPrincipal.FindByIdentity(principalContext, userId); 


//if usr is null create new user as below code 

     UserPrincipal newUser = new UserPrincipal(principalContext); 
       newUser.Name = userId; 
       newUser.UserPrincipalName = userId; 
       newUser.SetPassword(pwd.ToString()); 
       newUser.Enabled = false; 
       newUser.Save(); 



////REsponse obtained 





[DirectoryServicesCOMException (0x80072030): There is no such object on the server. 
] 
    System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +597561 
    System.DirectoryServices.DirectoryEntry.Bind() +44 
    System.DirectoryServices.DirectoryEntry.get_AdsObject() +42 
    System.DirectoryServices.DirectoryEntry.get_Options() +42 
    System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit() +351 

[PrincipalOperationException: There is no such object on the server. 
] 
    System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit() +495548 
    System.DirectoryServices.AccountManagement.PrincipalContext.DoApplicationDirectoryInit() +61 
    System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() +184 
    System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() +42 

Répondre

1

Je sais que cette question est ancienne, donc vous avez peut-être trouvé la solution. Mais pour les autres qui viennent ici par Google:

Il est utile que vous nous indiquiez quelle ligne est en train de lancer l'erreur, mais je suppose que c'est le mot SetPassword. La définition de ce mot de passe nécessite que le compte existe déjà. Alors déplacez votre SetPassword à après votre Save(). Je crois qu'il en est de même pour Enabled.

UserPrincipal newUser = new UserPrincipal(principalContext); 
      newUser.Name = userId; 
      newUser.UserPrincipalName = userId; 
      newUser.Save(); 

      newUser.Enabled = false; 
      newUser.SetPassword(pwd.ToString()); 
      newUser.Save();