我在程序中有这段代码,用于查询 Windows 域用户所属的组。
public void GetGroupNames(string userName, List<string> result)
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pc, userName);
if (uPrincipal != null)
{
PrincipalSearchResult<Principal> srcList = uPrincipal.GetGroups();
foreach (Principal item in srcList)
{
result.Add(item.ToString());
}
}
}
}
当我刚刚实现它并正在调试它时,
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pc, userName);
总是为空。然后我不得不关闭视觉工作室来做其他事情。当我回来时,打开了视觉工作室,这段代码就可以工作了。几天前,组织出现网络问题,那段时间我没有关闭我的电脑。网络恢复正常后,我可以正常连接到互联网,我可以远程桌面到服务器等,这证明 Active Directory 身份验证已完成,但上面的代码未能找到给定名称的 UserPrinical,例如我自己的。然后我重新启动PC,代码工作正常。我对这件事感到很困惑。有没有人可以为此提供一个很好的解释?