Active Directory 组查找功能失败

更新时间:2023-03-20 18:39:10

问题阐述

帮助!我一直在尝试编写一个函数来确认用户在 Active Directory 组中的成员身份,如果该成员恰好在该组中,它会起作用,但如果该用户不在该组中,它会抛出异常.

这是函数:

private bool IsUserMemberOfGroup(string user, string group){使用 (var ctx = new PrincipalContext(ContextType.Domain))使用 (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, group))使用 (var userPrincipal = UserPrincipal.FindByIdentity(ctx, user)){if (groupPrincipal == null){返回假;}别的{返回 userPrincipal.IsMemberOf(groupPrincipal);}}}

这里是 YSOD:

/"应用程序中的服务器错误.

未知错误 (0x80005000)

说明:在执行当前 Web 请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息.

异常详情:

System.Runtime.InteropServices.COMException: 未知错误 (0x80005000)

源错误:

<代码><前>第 34 行:其他第 35 行:{第 36 行:返回 userPrincipal.IsMemberOf(groupPrincipal);第 37 行:}第 38 行:}

我不知道它是否相关,但是当我逐步执行该函数时,groupPrincipal.Members.Count 会抛出System.NullReferenceException"类型的异常,Count.Base 会显示一个带有消息Object reference not设置为对象的实例".

这到底是怎么回事?当有人不是成员时,为什么名为 IsMemberOf 的 bool 不会返回 false?

谢谢,

丹尼尔