UserPrincipal.GetAuthorizationGroups() is slow

本文关键字:is slow GetAuthorizationGroups UserPrincipal | 更新日期: 2023-09-27 18:06:47

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

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

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

UserPrincipal.GetAuthorizationGroups() is slow

在调用UserPrincipal对象之前尝试做一些事情,以尝试删除初始化时间。如果这个新操作也需要很长时间,那么请查看我对类似问题的其他回答。

感谢这个帖子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()