UserPrincipal.GetAuthorizationGroups() работает медленно
По какой-то причине GetAuthorizationGroups()
Похоже, что возвращение групп занимает около 20 секунд. Я использую этот код:
UserPrincipal user;
// This takes 20 seconds
user.GetAuthorizationGroups().OfType<GroupPrincipal>().ToList();
У кого-нибудь есть идеи или это просто медленный домен AD? (Например, просмотр групп в Outlook не займет много времени)
2 ответа
Попробуйте сделать что-то с 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()