2012-02-16 9 views
0
DirectoryEntry testAD = new DirectoryEntry();  
DirectorySearcher search = new DirectorySearcher(testAD); 

StringBuilder add = new StringBuilder(); 
search.PropertiesToLoad.Add("mail"); 
search.Filter = "(&(objectClass=user))"; 

foreach (SearchResult SearchAll in search.FindAll()) 
{ 
    DirectoryEntry de = SearchAll.GetDirectoryEntry(); 
    add.Append(de.Properties["mail"].Value.ToString()); // error message here 
} 

PrefixDescription.Text = add.ToString(); 

すべての電子メールを最初にテストしてからすべての情報(ファーストネーム、ラストネームなど)を探して、LPARフィルタを使用してテキストボックスに表示しようとしていますが、アプリケーションを実行すると、メッセージ:LDAPフィルタを使用してすべての結果を検索します。エラーメッセージを取得する

オブジェクト参照がオブジェクトのインスタンスに設定されていません。

答えて

2

あなたはユーザーを列挙していますが、その結果のユーザーに電子メールアドレスがあることを保証するものではありません。あなたはエラー防止「101プログラミング」の基本的な必要があります。笑

+0

...あなたはObject reference not set....エラーを回避するには、この余分なチェックで

..... foreach (SearchResult result in search.FindAll()) { // this is totally unnecessary - the "SearchResult" already *contains* all // the properties you've defined in your "PropertiesToLoad" collection! // DirectoryEntry de = SearchAll.GetDirectoryEntry(); if(result.Properties["mail"] != null && result.Properties["mail"].Count > 0) { add.Append(result.Properties["mail"][0].ToString()); } } 

をありがとう、私は怠け者だったと他のため、エラー防止を気にしませんでした回私は他の方法で遊んでいた、それは単に空白のスペースを出力します。私は通常、インスタントメッセージを正しくインスタンス化しなかったときにそのエラーメッセージが表示されるので、エラーがそれに関連していることはわかりませんでした。ありがとうございました。 – nhat

関連する問題