2016-05-14 26 views
0

Ich benutze blasen Code, um Konto/Benutzer in AD LDS von meinem lokalen Computer (virtueller Desktop) Client zu erstellen. In meinem lokalen Code unten funktioniert gut Aber nach dem Bereitstellen von Code auf einem anderen Server, der sich von wo AD LDS installiert ist, löst Fehler "Es gibt kein solches Objekt auf dem Server" Komplette Antwort Header unten angegeben.AD LDS Fehler "Es gibt kein solches Objekt auf dem Server"

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 

Antwort

1

Ich weiß, dass diese Frage alt ist, also haben Sie vielleicht die Lösung gefunden. Aber für andere, die hier durch Google kommen:

Es hilft, wenn Sie uns sagen, welche Zeile den Fehler wirft, aber ich denke, es ist das SetPassword. Die Einstellung dieses Passworts setzt voraus, dass das Konto bereits existiert. Also verschieben Sie Ihre SetPassword nach Ihrer Save().

Ich glaube, das gleiche gilt für Enabled ebenso.

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

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