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()
Другие вопросы по тегам