web-dev-qa-db-fra.com

Comment se connecter à Active Directory avec le contexte principal?

J'y travaille depuis un moment et je reçois toujours:

System.DirectoryServices.AccountManagement.PrincipalServerDownException

Ce qui, je pense, signifie que ma configuration de connexion (chaîne de connexion) est incorrecte.

Lorsque j'écris "dsquery server" sur cmd sur l'ordinateur où se trouve Active Directory, j'obtiens:

"CN = DCESTAGIO, CN = SERVEURS, CN = Default-First-Site-Name, CN = Sites, CN = Configuration, DC = estagioit, DC = local"

J'ai essayé la connexion suivante des manières suivantes:

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");

Et d'autres façons ...

Des idées sur ce qui ne va pas et comment je peux faire fonctionner cette connexion?

PS: l'ip est correcte vu que je l'ai utilisé pour ping et ça marche.

PPS: J'ai vraiment, vraiment besoin de ce travail dès que possible si vous avez des suggestions, ils sont tous les bienvenus.

13
Vítor Martins

Si vous regardez la documentation des constructeurs PrincipalContext, cela devrait être assez clair:

public PrincipalContext(ContextType contextType, string name)

ou

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

Il vous faut donc essentiellement:

  • votre type de contexte (ici: ContextType.Domain)
  • le nom de domaine (essayez simplement le nom "Netbios", par exemple "YOURDOMAIN" - ou laissez NULL pour le domaine "par défaut")
  • éventuellement un conteneur (comme chemin LDAP - un nom "distingué", chemin complet mais sans LDAP:// préfixe)

Essayez donc quelque chose comme ceci:

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

ou

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

ou

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

ou

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