DirectoryEntry не содержит определения «Свойства» (. NET CORE 3.1) - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь получить свойство отдела из AD для определенного c пользователя. Но там написано DirectoryEntry does not contain a definition for 'Properties'. Во многих примерах stackoverflow используется следующий код. Почему у меня это не работает, я неправильно реализую? Я использую. net core 3.1.

var user = UserPrincipal.FindByIdentity(ctx, domainUser.DistinguishedName);
DirectoryEntry dirEntry = (DirectoryEntry)user.GetUnderlyingObject();                        
string dept = dirEntry.Properties["Department"].Value.ToString();

Я использую следующие (соответствующие) операции импорта.

using System.DirectoryServices.AccountManagement;
using System.Reflection.PortableExecutable;

Ответы [ 2 ]

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

Как вы выяснили, это потому, что System.Reflection.PortableExecutable имеет определение для DirectoryEntry, когда вы действительно хотите использовать System.DirectoryServices.DirectoryEntry.

Но еще одно замечание: атрибут department не требуется. Если он пуст, Value будет null, а вызов ToString() вызовет исключение. Так что вам лучше вместо этого привести к string:

var dept = (string) dirEntry.Properties["department"].Value;

Таким образом, если department не имеет значения, ваша переменная dept будет просто иметь null вместо выброс исключения.

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

Сам исправил. Оказывается, вам нужно установить System.DirectoryServices в nuget. После установки я сделал:

using System.DirectoryServices;

Импорт System.Reflection.PortableExecutable был неправильным ...

...