2012-10-11 68 views
0

我对网络ASP.net应用程序使用以下代码,本地工作正常,但在服务器上不工作。它返回一个错误,说“表不存在”。在我的网页配置中,我已经把<identity impersonate="true"/> 任何想法?从LDAP获取AD ID信息

#Region " Get AD ID information from LDAP" 
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
    Dim objRootDSE, objRecordSet, objCommand, objConnection, strDNSDomain As Object 
    Dim strQuery, strBase, strFilter, strAttributes As Object 
    Dim intCountNumber As Integer 

    Try 
     ' Determine DNS domain name from RootDSE object. 
     objRootDSE = GetObject("LDAP://RootDSE") 
     strDNSDomain = objRootDSE.Get("defaultNamingContext") 

     ' Use ADO to search Active Directory. 
     objRecordSet = Server.CreateObject("ADODB.recordset") 
     objCommand = Server.CreateObject("ADODB.Command") 
     objConnection = Server.CreateObject("ADODB.Connection") 
     objConnection.Provider = "ADsDSOObject" 
     objConnection.Open("Active Directory Provider") 
     objCommand.ActiveConnection = objConnection 

     strBase = "<LDAP://" & strDNSDomain & ">" 
     strFilter = "(&(objectCategory=person)(objectClass=user)(samaccountname=" & TB_UserID.Text & "))" 
     strAttributes = "sn,givenname,mail,telephoneNumber," 
     strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" 
     objCommand.CommandText = strQuery 
     objRecordSet = objCommand.Execute 
     intCountNumber = objRecordSet.Fields.Count 
     TB_Name.Text = objRecordSet.Fields("givenname").value 
     TB_LastName.Text = objRecordSet.Fields.Item("sn").value 
     TB_Email.Text = objRecordSet.Fields.Item("mail").value 
     TB_Telephone.Text = objRecordSet.Fields.Item("telephoneNumber").value 

     objRecordSet = Nothing 
     objConnection.Close() 
    Catch ex As Exception 
     DisplayWebMsgBox.WebMsgBox.MessageBox(ex.Message) 
    End Try 

End Sub 

端部区域

回答

0

我发现,与提供“ADsDSOObject”,它使用的用户creditentials运行LDAP搜索。所以从服务器端,它不能工作,除非我提供用户名和密码creditentials。

objConnection.Properties("User ID") = Username 
objConnection.Properties("Password") = Password 
objConnection.Properties("Encrypt Password") = True