C#, Как добавить запись в LDAP с несколькими классами объектов

Я пытаюсь создать новую пользовательскую запись в OpenLDAP с человеком классов объектов и uidObject. Проблема, кажется, это с Системой. DirectoryServices. DirectoryEntry я нашел только способ добавить новую запись с одним классом объекта, но не способ добавить несколько классов объектов.

Этот код C#

DirectoryEntry nRoot = new DirectoryEntry(path);
nRoot.AuthenticationType = AuthenticationTypes.None;
nRoot.Username = username;
nRoot.Password = pwd;

try
{
    DirectoryEntry newUser = nRoot.Children.Add("CN=" + "test", "person");
    newUser.Properties["cn"].Add("test");
    newUser.Properties["sn"].Add("test");
    newUser.Properties["objectClass"].Add("uidObject"); // this doesnt't make a difference
    newUser.Properties["uid"].Add("testlogin"); // this causes trouble
    newUser.CommitChanges();
}
catch (COMException ex)
{
    Console.WriteLine(ex.ErrorCode + "\t" + ex.Message);
}

... результаты по ошибке:

- 2147016684 требуемая операция не удовлетворила одно или несколько ограничений, связанных с классом объекта. (Исключение из HRESULT: 0x80072014)

5
задан Jarmo 23 April 2010 в 08:43
поделиться

1 ответ

Оказывается, вы можете добавить классы объектов после записи сначала был сохранен в LDAP и извлечен снова. Итак, с простым изменением все работает отлично!

DirectoryEntry newUser = nRoot.Children.Add("CN=" + "test", "person");
newUser.Properties["cn"].Add("test");
newUser.Properties["sn"].Add("test");
newUser.CommitChanges();

newUser.RefreshCache();
newUser.Properties["objectClass"].Add("uidObject");
newUser.Properties["uid"].Add("testlogin");
newUser.CommitChanges();
7
ответ дан 14 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: