尝试在LDAP服务器上查找用户时,出现以下错误“未知错误(0x8000500c)”
这是我正在使用的代码:
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "gandalf.intrafg");
UserPrincipal p = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, "Consultor1");
偶然地,下面的代码似乎有效(没有生成异常),但samAccountName作为字节数组出现。谁知道为什么?
DirectoryEntry entry = new DirectoryEntry("LDAP://gandalf.intrafg");
DirectorySearcher searcher = new DirectorySearcher(entry);
//searcher.PropertiesToLoad.Add("givenName");
//searcher.PropertiesToLoad.Add("sn");
searcher.PropertiesToLoad.Add("samAccountName");
searcher.Filter = "(&(objectCategory=person)(samAccountName=Consultor1))";
SearchResult result = searcher.FindOne();
答案 0 :(得分:0)
您的第二个代码块工作得很好,但是不在DirectoryEntry初始化程序中传递了域名。
Directory entry = new DirectoryEntry();
//other code
result.Properties["samAccountName"][0].ToString();
答案 1 :(得分:0)
你拥有的代码应该没问题 - 它对我有用,完全没问题。
但是:您没有告诉我们您在domain_name
填写的内容:
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "domain_name");
或userId
此处:
UserPrincipal p = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, UserId);
domain_name
必须采用“旧”NetBIOS样式,例如FABRIKAM
- 没有类似fabrikam.com
的DNS样式或dc=fabrikom,dc=com
等AD样式,甚至没有完整的LDAP路径。
userId
必须是有效的SAM帐户名称,例如最大。只有20个字符,字母和数字(除了一些有效的特殊字符)。
您是否遵守这些要求?