public bool IsUserGroupMember(string user, string unit)
{
bool member = false;
try
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
string[] groups = unit.Split(',');
foreach (string word in groups)
{
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, word);
if (grp != null)
{
foreach (Principal p in grp.GetMembers(true))
{
if (p.SamAccountName == user)
{
member = true;
grp.Dispose();
ctx.Dispose();
return member;
}
}
}
else
{
grp.Dispose();
ctx.Dispose();
return member;
}
}
}
catch (COMException)
{
return member;
}
return member;
}
Я использую метод выше, чтобы найти, является ли пользователь членом группы в Active Directory, рекурсивно. Он работает хорошо ... хотя иногда я получаю странное исключение.Active Directory exception asp .net
Указанный способ не поддерживается. foreach (Основной p в grp.GetMembers (true)) красный (извините, я не могу загрузить изображение исключения). Самая странная вещь в том, что это, кажется, брошена в случайном порядке, и если я обновить страницу она хорошо работает ..
Я пытался найти решение в Интернете, но не радостных новостей на данный момент ..
Благодарим за ответ @marc_s. Я понимаю ваш код. Единственная проблема сейчас в том, что я получаю это exeption: «up.GetAuthorizationGroups()» выбрасывает исключение типа «System.AppDomainUnloadedException» \t System.DirectoryServices.AccountManagement.PrincipalSearchResult {System. AppDomainUnloadedException}. Как это исправить? :) –
Sarah
Привет @marc_s, можете ли вы дать мне новый намек, пожалуйста? Я все еще придерживаюсь своего метода, который также требует времени для обработки; результат: начальная страница берет навсегда для загрузки .. :( – Sarah