Принципал уже существует LDAP C# - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь обновить пользователя в Active Directory, используя MVC C# LDAP, если пользователь уже находится в группах, я сначала удаляю его из группы и снова добавляю, используя контекст участника. Я попытался зафиксировать изменения в конце моего удаления l oop, но это не помогло

Вот мой код удаления кода:

PropertyValueCollection groups = result.GetDirectoryEntry().Properties["memberOf"];
                if (groups != null)
                {
                    for (int i = 0; i < groups.Count; i++)
                    {
                        string groupDn = (string)groups[i];

                        DirectoryEntry group = new DirectoryEntry("LDAP://" + groupDn, null, null);
                        if (group != null)
                        {
                            group.Invoke("Remove", new object[] { result.Path });
                        }
                        group.CommitChanges();
                    }
                }

код для добавления пользователя в группы

    //DirectoryEntry dirEntry = new DirectoryEntry(groupDirectoryEntry);
                using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, AD_Address))// "10.125.153.30"))
                {
                    foreach (var rights in accessGroupList)
                    {
                        GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, rights);
                        group.Members.Add(pc, IdentityType.UserPrincipalName, model.validPersalNumber); //this is where is failes
                        group.Save();
                    }
                }

1 Ответ

0 голосов
/ 08 мая 2020

при удалении кода группы после изменения фиксации мне пришлось закрыть группу

 PropertyValueCollection groups = result.GetDirectoryEntry().Properties["memberOf"];
                if (groups != null)
                {
                    for (int i = 0; i < groups.Count; i++)
                    {
                        string groupDn = (string)groups[i];

                        DirectoryEntry group = new DirectoryEntry("LDAP://" + groupDn, null, null);
                        if (group != null)
                        {
                            group.Invoke("Remove", new object[] { result.Path });
                        }
                        group.CommitChanges();
                        group.Close();
                    }
...