LDAP查询操作属性
我正在使用System.DirectoryServices
库来查询LDAP目录。我看到所有文本属性都很好,但我需要检索一些操作属性,如pwdChangedTime
。尝试获取这些属性时,我得到的对象未设置为对象的类型错误实例。LDAP查询操作属性
using (DirectorySearcher search = new DirectorySearcher(dirCon,
ldapSearchFilter.Replace("{cn}", cn),
new string[] {"*","+"},
SearchScope.Subtree))
{
foreach (SearchResult sr in search.FindAll())
{
la = new LdapAccount();
la.pswdUpdateTime = DateTime.ParseExact(sr.GetDirectoryEntry().Properties["pwdchangedtime"].ToString(), dateFormat, null);
...
}
我看到所有的文本属性,但它不会找到任何操作属性。
在本地进行一些测试我在SearchResult
上看到属性pwdlastset
,所以我不知道属性名称是否与您期望的不同。
result.Properties["pwdlastset"]
SearchResult属性集合上还有一个PropertyNames
集合可能很有用。另外,当我在没有调用GetDirectoryEntry()
之前询问AD时,只是直接从SearchResult枚举了属性。
感谢您的回复,令人困惑的是,当我查看PropertyNames集合(以及底层哈希表)时,我看到“pwdchangedtime”条目,并且它具有正确的dateTime值。我不知道为什么我不能从集合中提取这个... – cobolstinks
这很有趣。所以'sr.GetDirectoryEntry()。属性[“pwdchangedtime”]。ToString()'是抛出异常的那块?或者是其他一些线路。我会认为,如果你可以得到一个对DirectoryEntry的引用,并查看Visual Studio中的基础属性,你应该可以在代码中做同样的事情...... – csm8118
正确我在那里得到一个空指针。它很奇怪。我会理解空指针,如果属性不回来,但它是... – cobolstinks
@marc_s LDAP实际上是相当* unpicky *的情况下,特别是在属性名称。 – EJP