我正在编写一段代码,该代码应该根据他们的 SamAccountName 作为搜索参数在活动目录中搜索特定用户 GivenName (forename) 和 Surname,然后返回一个包含他们的名字和姓氏的字符串。
到目前为止我写的代码如下:
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 unhandled "A local error has occurred"
主体上下文对象创建得很好,就像用户主体对象一样,它只在执行上述行时抛出错误。更奇怪的是,这段代码似乎在几天前就起作用了。如果有人阅读本文对我为什么会收到此错误有任何想法,我将不胜感激!
PS我求助于这个问题,因为该死的错误信息有点太神秘而无法真正弄清楚,或者至少对我来说(发生了本地错误)真的吗?任何认为这是有用的错误消息的开发人员都是白痴。