1
我正在编写一段代码,该代码应根据其SamAccountName作为搜索参数在特定用户的GivenName(forename)和Surname的活动目录中进行搜索,然后返回一个包含他们的名字和姓氏的字符串。UserPrincipal SamAccountName引发未处理的DirectoryServicesCOMException“发生本地错误”
到目前为止我写的代码如下:
public static string GetName(string uName)
{
StringBuilder builder = new StringBuilder();
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "serverName"))
{
UserPrincipal user = new UserPrincipal(context);
user.SamAccountName = uName;
PrincipalSearcher srch = new PrincipalSearcher(user);
srch.QueryFilter = user;
PrincipalSearchResult<Principal> res = srch.FindAll();
foreach (UserPrincipal u in res)
{
builder.Append(u.GivenName);
builder.Append(" ");
builder.Append(u.Surname);
}
return builder.ToString();
}
}
我与上面的代码具有的问题是,在运行时的线
user.SamAccountName = uName;
引发以下错误:DirectoryServicesCOMException未处理“出现本地错误”
主体上下文对象创建得很好,就像用户主体对象一样,它只会抛出第执行上述行时发生错误。更奇怪的是,这些代码似乎在几天前运行。如果有人读到这个有什么想法,为什么我得到这个错误,我会非常感激!
P.S. 因为血腥的错误信息有点过于隐晦而无法真正弄清楚,或者至少对我来说(真的发生了本地错误),我是否诉诸这些?无论开发人员认为这是一个有用的错误消息是一个白痴。
感谢您的新鲜眼睛可以这么说。这确实是证书无效。我意识到,当使用PrincipalContext.ValidateCredentials检查凭证的有效性时,它证实没有问题。问题在于我实际上没有在上面的方法中使用用户名和密码提供PrincipalContext。我能够通过更改PrincipalContext参数来解决此问题:PrincipalContext上下文=新的PrincipalContext(ContextType.Domain,域名,uName,pswd –
@ Termin8tor很高兴知道你解决了它。 – akton