DirectoryEntry不包含 "属性 "的定义(.NET CORE 3.1)

问题描述 投票:0回答:1

我试图从AD中获取一个特定用户的部门属性。但它说 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;
c# .net .net-core active-directory
1个回答
0
投票

我自己修了一下。原来你必须安装 System.DirectoryServices 在nuget中。安装后,我做。

using System.DirectoryServices;

我做了: System.Reflection.PortableExecutable 导入是错误的...


0
投票

如你所想,这是因为 System.Reflection.PortableExecutable 有一个定义 DirectoryEntry当你真正想使用 System.DirectoryServices.DirectoryEntry.

但另一个问题是: department 属性是不需要的。如果它是空的。Value 将是 null 和呼吁 ToString() 会抛出一个异常。所以,你最好是投向一个 string 而不是。

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

这样一来,如果... department 没有值,您的 dept 变量最终会变成 null 而不是抛出一个异常。

© www.soinside.com 2019 - 2024. All rights reserved.