我已经有一段时间了,我总是得到:
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:如果您有任何建议,我真的非常需要这项工作,欢迎您。
答案 0 :(得分:28)
如果查看PrincipalContext
构造函数的文档,应该非常清楚:
public PrincipalContext(ContextType contextType, string name)
或
public PrincipalContext(ContextType contextType, string name, string container)
所以你基本上需要:
ContextType.Domain
)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");