Я пытался найти способ получить некоторые атрибуты из активного пользователя каталога, которые не находятся в объекте UserPrincipal
по умолчанию. При поиске ответа я наткнулся на this question. Я уверен, что ответ, отправленный @marc_s, прав, он по крайней мере очень полезен. Из-за его полезности я создал класс UserPrincipalEx
и сделал все, что предложил @marc_s в его ответе. Сам класс, по-видимому, определен правильно, кроме того, что мой расширенный атрибут, в этом случае title
всегда возвращает пустую строку. Я дважды проверял в AD, что атрибут называется title
, поэтому я должен хватать правильный атрибут. Я просто не получаю для него никакого контента.Extended UserPrincipal Только возврат пустой строки
@marc_s также упоминает, что класс является скелетом , но если это почему я не могу заставить его работать, что еще мне нужно добавить?
Я определил его два класса в своем собственном .cs
классе под названием UserPrincipalEx.cs
и у меня есть оба UserPrincipalExSearchFilter
и UserPrincipalEx
классы, определенные в этом файле. Когда я создаю свой объект в своем коде, он всегда возвращает пустую строку.
UserPrincipalEx user = new UserPrincipalEx(principal.Context);
if (user == null) return false;
return user.Title == "A value other than empty" | (user.Title == "" || user.Title == null);
Что еще мне нужно сделать, чтобы захватить значение title
из AD?
Update:
Если я следовать при получении от title
приписывать UserPrincipalEx
всегда говорит, что это нуль, которая по-прежнему заставляет меня чувствовать, что я сделал что-то не так с UserPrincipalEx.cs
[DirectoryProperty("title")]
public string Title
{
get
{
if (ExtensionGet("title").Length != 1)
return string.Empty;
return (string)ExtensionGet("title")[0];
}
set { ExtensionSet("title", value); }
}
всегда попадает в return string.Empty;
и, как говорится в строках, возвращает пустую строку
Обновление e 2:
От того, что я могу сказать, не имеет значения, какой расширенный атрибут вы ищете. UserPrincipalEx всегда возвращает null и делает пустую строку.