none
.NET DirectoryEntry RRS feed

  • Вопрос

  • Здравствуйте.

    Пытаюсь обновить пользователю в AD параметры Компания, Отдел, Должность. Но проблема в том, что у пользователя, до этого, данные параметры заполнены не были и в перечисление lowerLdap.Properties они не попадают. Соответственно, при выполнении lowerLdap.Properties["company"][0] = company; выбрасывается исключение об обращении за пределы диапазона.

    Подскажите пожалуйста, как выкрутиться в данной ситуации.

    using (UserPrincipal oUserPrincipal = GetUser("username"))
     {
              DirectoryEntry lowerLdap = (DirectoryEntry)oUserPrincipal.GetUnderlyingObject();
              lowerLdap.Properties["company"][0] = company;
              lowerLdap.Properties["department"][0] = department;
              lowerLdap.Properties["title"][0] = title;
    }


    12 августа 2016 г. 8:56

Ответы


  • using (UserPrincipal oUserPrincipal = GetUser(sUserName))
                {
                    DirectoryEntry lowerLdap = (DirectoryEntry)oUserPrincipal.GetUnderlyingObject();

                    using (DirectorySearcher directorySearcher = new DirectorySearcher(lowerLdap))
                    {
                        directorySearcher.PropertiesToLoad.Add("company");
                        directorySearcher.PropertiesToLoad.Add("department");
                        directorySearcher.PropertiesToLoad.Add("title");

                        SearchResult result = directorySearcher.FindOne();

                        DirectoryEntry entryToUpdate = result.GetDirectoryEntry();

                        entryToUpdate.Properties["company"].Value = company;
                        entryToUpdate.Properties["department"].Value = department;
                        entryToUpdate.Properties["title"].Value = title;

                        entryToUpdate.CommitChanges();
                    }
                }

    • Помечено в качестве ответа Sergey V. Novikov 15 августа 2016 г. 9:33
    15 августа 2016 г. 9:33

Все ответы

  • oUserPrincipal.PropertiesToLoad.Add()?
    13 августа 2016 г. 20:27

  • using (UserPrincipal oUserPrincipal = GetUser(sUserName))
                {
                    DirectoryEntry lowerLdap = (DirectoryEntry)oUserPrincipal.GetUnderlyingObject();

                    using (DirectorySearcher directorySearcher = new DirectorySearcher(lowerLdap))
                    {
                        directorySearcher.PropertiesToLoad.Add("company");
                        directorySearcher.PropertiesToLoad.Add("department");
                        directorySearcher.PropertiesToLoad.Add("title");

                        SearchResult result = directorySearcher.FindOne();

                        DirectoryEntry entryToUpdate = result.GetDirectoryEntry();

                        entryToUpdate.Properties["company"].Value = company;
                        entryToUpdate.Properties["department"].Value = department;
                        entryToUpdate.Properties["title"].Value = title;

                        entryToUpdate.CommitChanges();
                    }
                }

    • Помечено в качестве ответа Sergey V. Novikov 15 августа 2016 г. 9:33
    15 августа 2016 г. 9:33