如何使用Principal Context连接到Active Directory?

时间:2015-04-13 14:49:19

标签: c# active-directory principalcontext

我已经有一段时间了,我总是得到:

  

System.DirectoryServices.AccountManagement.PrincipalServerDownException

我认为这意味着我的连接设置(连接字符串)错误。

当我写" dsquery server"在我得到Active Directory的计算机上的cmd上:

  

" CN = DCESTAGIO,CN =服务器,CN =默认第一站点的名称,CN =站点,CN =配置,DC = estagioit,DC =本地"

我已通过以下方式尝试以下连接:

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它并且它正在工作。

PPS:如果您有任何建议,我真的非常需要这项工作,欢迎您。

1 个答案:

答案 0 :(得分:28)

如果查看PrincipalContext构造函数的文档,应该非常清楚:

public PrincipalContext(ContextType contextType, string name)

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

所以你基本上需要:

  • 您的上下文类型(此处:ContextType.Domain
  • 域名(只需输入" Netbios"名称,例如" YOURDOMAIN" - 或为&#34保留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");