c# – UserPrincipal GetUnderlyingObject:缺少属性

我正在尝试从UserEntry加载属性physicalDeliveryOfficeName,该属性由UserPrincipal实例的GetUnderlyingObject方法返回:

DirectoryEntry directoryEntry = principal.GetUnderlyingObject() as DirectoryEntry;

这意味着以下语句返回false:

directoryEntry.Properties.Contains("physicalDeliveryOfficeName");

我知道可以通过在使用所述DirectorySearcher时将名称添加到StringCollection DirectorySearcher.PropertiesToLoad来加载此属性.

我的问题是,为什么GetUnderlyingObject方法返回的DirectoryEntry不包含所有属性?如何在不使用DirectorySearcher的情况下加载此属性?

谢谢你的回答!

解决方法:

访问DirectoryEntry的所有字段是一个可能缓慢而繁重的操作.某些字段可能无法复制到所有域控制器,因此引入这些值可能需要访问远程且访问速度较慢的全局编录(GC)服务器.

一旦掌握了DirectoryEntry并且想要提取特定值,就可以调用RefreshCache方法,并为其传递所需属性的名称.

上一篇:c# – Authentication / PrincipalPermission不起作用


下一篇:webapi ClaimsPrincipal使用