我正在尝试从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
方法,并为其传递所需属性的名称.