Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# User.IsInRole为一个组返回false,但不为另一个组返回false_C#_Active Directory - Fatal编程技术网

C# User.IsInRole为一个组返回false,但不为另一个组返回false

C# User.IsInRole为一个组返回false,但不为另一个组返回false,c#,active-directory,C#,Active Directory,我在这两个广告组:第一组,第二组。当我在两个组中时,为什么相同的代码对Group1返回false,对Group2返回true var user = new WindowsPrincipal(WindowsIdentity.GetCurrent()); if (!user.IsInRole(groupName)) { return false; } 当我使用第三方广告工具进行检查时,我可以看到我属于这两个群体,但我只是在检查两个普通的广告组。我不知道从哪里开始找出为什么一个返回false,另一个

我在这两个广告组:第一组,第二组。当我在两个组中时,为什么相同的代码对Group1返回false,对Group2返回true

var user = new WindowsPrincipal(WindowsIdentity.GetCurrent());
if (!user.IsInRole(groupName)) { return false; }
当我使用第三方广告工具进行检查时,我可以看到我属于这两个群体,但我只是在检查两个普通的广告组。我不知道从哪里开始找出为什么一个返回false,另一个返回true

这种完全不同的方法有效:

var principalContext = new PrincipalContext(ContextType.Domain, "foo.bar:389", "dc=foo,dc=bar", "account", "pw");

using (var userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, principal.Identity.Name))
{
    Console.WriteLine(userPrincipal.IsMemberOf(principalContext, IdentityType.SamAccountName, groupName));  // RETURNS TRUE
}
编辑

我使用了一个免费的广告工具,试图找出这两个群体之间的一些差异。我发现的唯一真实情况是父容器是不同的。这可能与问题有关吗

父容器
组1:安全组/非特定位置/域。本地

组2:CityName/Security Groups/NonLocationSpecific/domain.LOCAL

如果在中设置断点,PrestoUser.Groups属性会显示什么?您的广告帐户是否在属于组1的组中?如果是这样,您将需要递归搜索。@ChrisBint我看到了PrestoUser.Identity.WindowsIdentity.Groups。一共有159个,我只看到一堆SID。@BillSambrone不,我的广告帐户是这两个组的直接成员。Group1是该用户的“主要组”吗?