Ну, одна вещь, которую вы могли бы рассмотреть, чтобы сделать вещи более эффективными, основана на том факте, что членство в группе действительно управляется группой, которая имеет список пользователей (и групп), которые являются ее членами.«MemberOf» для пользователя - это действительно просчитанная «обратная ссылка» - см. Эту превосходную статью для получения дополнительной информации.
Так что если вам нужно проверить членство в одной или двух группах,может быть, намного проще просто подойти к этим группам и попросить их список участников, и их кэшировать.При оценке пользователей вам нужно только проверить, отображается ли их DN в одном из списков членов группы, не нажимая AD снова и снова.
Вы будете делать что-то вроде:
GroupPrincipal myGroup = Group.FindByIdentity(context, "myGroupName");
var members = myGroup.GetMembers();
Благодаря этому вы сможете повысить производительность благодаря кэшированию информации о членстве в группе.Попробуйте!