使用System.DirectoryServices.AccountManagement程序集。
我正在使用构造函数
PrincipalContext context = new PrincipalContext(
ContextType.Domain,
"myserver.ds.com",
"LDAP://OU=the-users,DC=myserver,DC=ds,DC=com",
adusername,
password);
我可以调用context.ValidateCredentials(adusername, password, ContextOptions.ServerBinding)
并返回true。
我一打电话 UserPrincipal.FindByIdentity(context,IdentityType.SamAccountName,username);
我得到各种PrincipalOperationException。有时是“服务器发送推荐人”。其他时候是未知错误(0x80005000)
我正在使用这些重载,因为有问题的服务器不在同一个域中 运行程序的用户在。
无论如何,如何解决这个问题以及对程序参数的一些启示将是最受欢迎的。
先谢谢。
答案 0 :(得分:6)
从您传递的容器字符串中删除LDAP://
。
之后应该可以正常工作。
答案 1 :(得分:0)
您能告诉我们您发送到FindByIdentity
的确切值吗? PrincipalContext的创建似乎很好,如果它可以验证用户凭据,那么你的连接也应该没问题。传递给FindByIdentity的参数很可能有问题。
马克
答案 2 :(得分:0)
请注意,.NET 4.0中存在FindByIdentity()的错误。