出于某种原因GetAuthorizationGroups()
,返回组似乎需要大约 20 秒。我正在使用这段代码:
UserPrincipal user;
// This takes 20 seconds
user.GetAuthorizationGroups().OfType<GroupPrincipal>().ToList();
任何人有任何想法,或者它只是一个缓慢的 AD 域?(例如,在 Outlook 中查看组不需要那么长时间)
出于某种原因GetAuthorizationGroups()
,返回组似乎需要大约 20 秒。我正在使用这段代码:
UserPrincipal user;
// This takes 20 seconds
user.GetAuthorizationGroups().OfType<GroupPrincipal>().ToList();
任何人有任何想法,或者它只是一个缓慢的 AD 域?(例如,在 Outlook 中查看组不需要那么长时间)
归功于这篇文章https://milestone.topics.it/2012/12/userprincipalgetauthorizationgroupsoh-my.html指出了这个小方法
RefreshCache( new string[] { "tokenGroups" } );
您必须在底层 DirectoryEntry 上运行它。在调用 GetAuthorizationGroups() 之前这样做会大大提高性能。因此,如果您尝试以下代码 -
userPrincipal user; // Initialise
DE = (DirectoryEntry)user.GetUnderlyingObject();
DE.RefreshCache(new string[] { "tokenGroups" });
user.GetAuthorizationGroups()