10

次のコードを使用して AD のユーザーのリストにアクセスしていますが、ユーザーをコンボボックスに追加する行で null 参照例外が発生します。

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);
    }
}

私が間違っていることは何か分かりますか?

コンボボックスを a に置き換えたところ、Console.WriteLine(result.DisplayName)正常に動作しました。

4

1 に答える 1

9

それが問題かどうかは 100% わかりませんが、PrincipalSearcher実際にはオブジェクトのリストが返されPrincipalます。

したがって、何らかの理由でサーチャーが ではないものを返すUserPrincipal場合、オブジェクトresultはプロパティではなく null になります.DisplayName

したがって、チェックを次のように変更する必要があります。

foreach (UserPrincipal result in search.FindAll())
{
    if (result != null && result.DisplayName != null)
    {
        comboBox2.Items.Add(result.DisplayName);
    }
}
于 2012-05-19T14:21:53.157 に答える