2012-02-22 2 views
4

Я пытаюсь загрузить атрибут physicalDeliveryOfficeName из DirectoryEntry, который возвращается методом GetUnderlyingObject в виде UserPrincipal например:UserPrincipal GetUnderlyingObject: свойства отсутствуют

DirectoryEntry directoryEntry = principal.GetUnderlyingObject() as DirectoryEntry; 

означает, что следующее выражение возвращает ложь:

directoryEntry.Properties.Contains("physicalDeliveryOfficeName"); 

Я знаю, что это свойство может быть загружен, добавив имя в StringCollectionDirectorySearcher.PropertiesToLoad при использовании сказал DirectorySearcher.

Мои вопросы: почему нет DirectoryEntry, возвращенный методом GetUnderlyingObject, содержит все свойства? И как я могу загрузить это свойство без использования DirectorySearcher?

Благодарим за любой ответ!

ответ

5

Доступ ко всем полям для DirectoryEntry является потенциально медленной и тяжелой работой. Некоторые поля не могут быть реплицированы на все контроллеры домена, поэтому для получения значений может потребоваться доступ к удаленному и медленному доступу к серверу глобального каталога (GC).

Как только у вас есть DirectoryEntry в руке, и вы хотите вывести определенное значение, вы можете вызвать метод RefreshCache, передав ему имена необходимых вам свойств.

Смежные вопросы