2011-10-31 128 views
1

我正在使用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); 
... 
} 

我看到所有的文本屬性,但它不會找到任何操作屬性。

+0

@marc_s LDAP實際上是相當* unpicky *的情況下,特別是在屬性名稱。 – EJP

回答

1

在本地進行一些測試我在SearchResult上看到屬性pwdlastset,所以我不知道屬性名稱是否與您期望的不同。

result.Properties["pwdlastset"] 

SearchResult屬性集合上還有一個PropertyNames集合可能很有用。另外,當我在沒有調用GetDirectoryEntry()之前詢問AD時,只是直接從SearchResult枚舉了屬性。

+0

感謝您的回覆,令人困惑的是,當我查看PropertyNames集合(以及底層哈希表)時,我看到「pwdchangedtime」條目,並且它具有正確的dateTime值。我不知道爲什麼我不能從集合中提取這個... – cobolstinks

+0

這很有趣。所以'sr.GetDirectoryEntry()。屬性[「pwdchangedtime」]。ToString()'是拋出異常的那塊?或者是其他一些線路。我會認爲,如果你可以得到一個對DirectoryEntry的引用,並查看Visual Studio中的基礎屬性,你應該可以在代碼中做同樣的事情...... – csm8118

+0

正確我在那裏得到一個空指針。它很奇怪。我會理解空指針,如果屬性不回來,但它是... – cobolstinks