2012-05-19 418 views
4

我正在使用以下代碼來訪問我的AD中的用戶列表,但是在將用戶添加到我的組合框的行上,我得到一個空引用異常。從Active Directory PrincipalContext獲取所有用戶

PrincipalContext AD = new PrincipalContext(ContextType.Domain, "mydomainip"); 
UserPrincipal u = new UserPrincipal(AD); 
PrincipalSearcher search = new PrincipalSearcher(u); 

foreach (UserPrincipal result in search.FindAll()) 
{ 
    if (result.DisplayName != null) 
    { 
     comboBox2.Items.Add(result.DisplayName); 
    } 
} 

任何想法我做錯了什麼?

我用Console.WriteLine(result.DisplayName)替換了組合框,它工作正常。

回答

6

不是100%確定是否這是問題 - 但PrincipalSearcher確實返回一個Principal對象的列表。

因此,如果 - 無論什麼原因 - 你的搜索將返回東西是一個UserPrincipal,那麼你的對象result是空 - 沒有它的.DisplayName財產。

所以,你應該檢查你的改變:

foreach (UserPrincipal result in search.FindAll()) 
{ 
    if (result != null && result.DisplayName != null) 
    { 
     comboBox2.Items.Add(result.DisplayName); 
    } 
} 
+0

我試過了。它不起作用。 – user541597

+0

@ user541597:嗯 - 即使在運行此代碼時創建了'comboBox2'?你可以在調試時檢查'comboBox2'或'comboBox2.Items'是否爲NULL? –

+0

在初始化組件之前調用該方法。 – user541597

相關問題