powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / AD и вложенные группы
1 сообщений из 26, страница 2 из 2
AD и вложенные группы
    #38916778
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1Было уже обрадовался и взял себе код класса PrincipalService, но на определенных группах AD код зациклился (скорее всего из-за вложенности друг в друга (так уж сделали админы)) в бесконечность... Еще мелочь: если напрямую использовать using, то будет exception (почему и спросил выше)...
Потому что там отложенный yield.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public class PrincipalService: IDisposable
{
    const int MaximumDepth = 100;

    PrincipalContext context;

    public PrincipalService()
    {
        context = new PrincipalContext(ContextType.Domain);
    }

    public IEnumerable<string> GetGroups(string identity)
    {
        var user = UserPrincipal.FindByIdentity(context, identity);
        return GetGroups(user, 0).Distinct();
    }

    private IEnumerable<string> GetGroups(Principal principal, int currentDepth)
    {
        foreach (var group in principal.GetGroups())
        {
            yield return group.Name;
            if (currentDepth < MaximumDepth)
            {
                foreach (string sub in GetGroups(group, currentDepth + 1))
                {
                    yield return sub;
                }
            }
        }
    }

    public void Dispose()
    {
        context.Dispose();
    }
} 
...
Рейтинг: 0 / 0
1 сообщений из 26, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / AD и вложенные группы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]