2016-05-14 32 views
0

ローカルマシン(仮想デスクトップ)クライアントからAD LDSでアカウント/ユーザーを作成するためにブローコードを使用しています。 私のローカルの下のコードでは問題ありませんが、AD LDSがインストールされている場所とは異なる別のサーバーにコードを展開した後、「サーバーにそのようなオブジェクトがありません」というエラーがスローされます。AD LDSエラー「サーバーにそのようなオブジェクトがありません」

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 

答えて

1

私はこの問題が古いことを知っているので、解決策を見つけた可能性があります。 Googleを介してここに来る他の人たち:

エラーを投げている行を教えてもらえれば助かりますが、私はそれがSetPasswordだと思います。そのパスワードを設定するには、アカウントがすでに存在している必要があります。したがって、Save()の後にSetPasswordを移動してください。

私は同じことがEnabledでも当てはまると思います。

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

      newUser.Enabled = false; 
      newUser.SetPassword(pwd.ToString()); 
      newUser.Save(); 
関連する問題