2014-10-29 74 views
1

我有一个程序,我开发了查找用户信息在LDAP并返回到ListView查询2个域。它适用于一个域,当我尝试在IF语句中包含第二个错误时,它将失败,如LDAP中的某些内容为空,当我手动检查时,它不为空。我的if语句中的逻辑可能有缺陷,有人可以偷看吗?vb.net LDAP在同一时间

Dim userIds As IEnumerable(Of String) = {"test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8"} 
     For Each i As String In userids 
      Dim de As New DirectoryEntry("LDAP://domain1.com:389/DC=domain1,DC=com") 
      Dim LdapFilter As String = "(sAMAccountName=" & i & ")" 
      Dim searcher As New DirectorySearcher(de, LdapFilter) 
      Dim result As SearchResult = searcher.FindOne() 
      Dim res As SearchResultCollection = searcher.FindAll() 

      If res Is Nothing OrElse res.Count <= 0 Then 
       Dim tdbfg As New DirectoryEntry("LDAP://domain2.com:389/OU=Users,OU=domain2,DC=domain2,DC=com") 
       Dim TDLdapFilter As String = "(sAMAccountName=" & i & ")" 
       Dim TDsearcher As New DirectorySearcher(tdbfg, TDLdapFilter) 
       Dim TDresult As SearchResult = searcher.FindOne() 
       Dim item As ListViewItem = ListView1.Items.Add(i) 
       item.SubItems.Add(result.Properties("displayName")(0).ToString()) 
       item.SubItems.Add(result.Properties("title")(0).ToString()) 
       item.SubItems.Add(result.Properties("userPrincipalName")(0).ToString()) 
      Else 
       Dim item As ListViewItem = ListView1.Items.Add(i) 
       item.SubItems.Add(result.Properties("displayName")(0).ToString()) 
       item.SubItems.Add(result.Properties("title")(0).ToString()) 
       item.SubItems.Add(result.Properties("userPrincipalName")(0).ToString()) 
      End If 
     Next 

基本上,如果它无法在第一次搜索中找到用户标识,它应该再次在第二个域中查找并返回结果。另外,我怎样才能把它变成一个ELSEIF语句?我想有另外一个声明,说如果这两个域名不在任何一个域中,那么“做某事”。

谢谢!

回答

0

啊,我的变量在else部分错了!

希望这可以帮助别人。

+1

OP正在回答他/她自己的问题。标记为“谢谢”答案在此处不适用。 – showdev 2014-10-29 16:34:13

+0

家伙,我回答了我自己的问题,所以我认为这将是有益的。瑞恩 - 冷静下来,如果你愿意阅读我的回复,你会意识到为什么我将它添加为答案。 – 2014-10-29 16:42:39