web-dev-qa-db-ja.com

プリンシパルコンテキストでActive Directoryに接続する方法は?

私はこれにしばらくの間取り組んできましたが、私はいつも次のようになっています:

System.DirectoryServices.AccountManagement.PrincipalServerDownException

これは、私の接続設定(接続文字列)が間違っていることを意味すると思います。

Active Directoryがあるコンピューターのcmdで「dsqueryサーバー」を作成すると、次のようになります。

「CN = DCESTAGIO、CN = SERVERS、CN = Default-First-Site-Name、CN = Sites、CN = Configuration、DC = estagioit、DC = local」

次の方法で次の接続を試みました。

1:

PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "192.168.56.101", "DC=estagioit,DC=local");

2:

PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "192.168.56.101/DC=estagioit,DC=local");

3:

PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "192.168.56.101/CN=DCESTAGIO,DC=estagioit,DC=local");

4:

PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "192.168.56.101/CN=DCESTAGIO,CN=SERVERS,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=estagioit,DC=local");

5:

PrincipalContext thisPrincipalContext = new PrincipalContext(ContextType.Domain, "LDAP://192.168.56.101/CN=Users,DC=estagioit,DC=local");

そして、他のいくつかの方法...

何が間違っているのか、この接続を機能させるにはどうすればよいですか?

PS:IPはpingに使用し、機能しているので正しいIPです。

PPS:何か提案があれば歓迎します。

13
Vítor Martins

PrincipalContextコンストラクターのドキュメントを見ると、非常に明確なはずです。

public PrincipalContext(ContextType contextType, string name)

または

public PrincipalContext(ContextType contextType, string name, string container)

だからあなたは基本的に必要です:

  • コンテキストタイプ(ここで:ContextType.Domain
  • ドメイン名(「Netbios」名、例えば「YOURDOMAIN」のみを試す-または「デフォルト」ドメインにNULLを残す)
  • オプションでコンテナ(LDAPパスとして-「識別された」名前、フルパス、ただしLDAP://プレフィックス)

次のようなものを試してください:

PrincipalContext thisPrincipalContext = 
    new PrincipalContext(ContextType.Domain, "ESTAGIOIT");

または

PrincipalContext thisPrincipalContext = 
    new PrincipalContext(ContextType.Domain, null);  // default domain

または

PrincipalContext thisPrincipalContext = 
    new PrincipalContext(ContextType.Domain, "ESTAGIOIT", "DC=estagioit,DC=local");

または

PrincipalContext thisPrincipalContext = 
    new PrincipalContext(ContextType.Domain, null, "CN=Users,DC=estagioit,DC=local");
29
marc_s