GetGroups与GetAuthorizationGroups

时间:2016-03-16 19:41:39

标签: c# asp.net .net active-directory

当我使用GetGroups而不是GetAuthorizationGroup时,它会很好,但即使给定用户存在组,后者也会检索无。我使用的代码如下:

string userName = "userid";

PrincipalContext yourDomain = CurrentPrincipalContext;
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);
PrincipalSearchResult<Principal> groups = user.GetGroups();//user.GetAuthorizationGroups();
List<GroupPrincipal> result = groups.Select(x => (GroupPrincipal)x).ToList();
return result.Select(g => g.Name).ToList();

我可以使用GetGroups,但是GetGroups方法在localhost中检索数据,但在将其推送到IIS 6.0时不会获取任何数据,因此我必须坚持使用GetAuthorizationGroups。

请帮帮我....

1 个答案:

答案 0 :(得分:0)

由于ActiveDirectory中的过时SID,GetAuthorizationGroups失败。由于GetAuthorizationGroups以递归方式工作,因此它可以是顶级SID,也可以是附加到顶级组的SID。我要包含一个希望有所帮助的链接。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9dd81553-3539-4281-addd-3eb75e6e4d5d/getauthorizationgroups-fails-with-nomatchingprincipalexception?forum=csharpgeneral

注意:我也被告知GetAuthorizationGroups将结果缓存某个地方一段时间,并且无法手动清除。因此,我不得不编写代码来搜集群组。