7

出于某种原因GetAuthorizationGroups(),返回组似乎需要大约 20 秒。我正在使用这段代码:

UserPrincipal user;

// This takes 20 seconds
user.GetAuthorizationGroups().OfType<GroupPrincipal>().ToList();

任何人有任何想法,或者它只是一个缓慢的 AD 域?(例如,在 Outlook 中查看组不需要那么长时间)

4

2 回答 2

3

UserPrincipal在进行此调用之前尝试对对象执行某些操作以尝试删除初始化时间。如果该新操作也需要很长时间,请查看我对类似问题的其他答案

于 2014-06-08T12:50:17.800 回答
0

归功于这篇文章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()
于 2022-02-04T09:46:41.207 回答