2016-03-16 14 views
1

當我使用GetGroups而不是GetAuthorizationGroup時,它的結果很好,但是稍後的一個檢索沒有,即使給定用戶存在組。我已經如下面使用的代碼:GetGroups vs GetAuthorizationGroups

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方法檢索時推到IIS 6.0在本地主機,但獲取沒有數據,因此我要堅持上GetAuthorizationGroups。

請幫我....

回答

0

GetAuthorizationGroups失敗,因爲在ActiveDirectory中過時的SID。由於GetAuthorizationGroups以遞歸方式工作,因此它可能是頂級SID或連接到頂級組的頂級SID。我包括一個有希望幫助的鏈接。

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

注:我也被告知,GetAuthorizationGroups某處緩存結果一定長度的時間和心不是能夠手動清除。正因爲如此,我不得不編寫代碼來拼湊團隊。

相關問題