Unten ist der Code, wo ich versuchen, eine Verbindung zu LDAP durch VB.NET-Code. Der folgende Code funktioniert auf meinem lokalen PC in VS 2015, gibt aber einen Fehler, wenn ich den gleichen Code im Server hosten.LDAP-Konnektivität funktioniert nicht auf Server IIS aber funktioniert in meinem lokalen VS 2015
Ist etwas falsch mit der Art, wie ich die FindAll() -Funktion aufrufen. Dieselbe Funktion gibt mir den erforderlichen Wert auf meinem lokalen PC zurück, gibt aber eine Ausnahme im Server. Ich habe die Ausnahme von dem Server erfasst und die Fehlermeldung unten nach dem Code sagt
Private entry As DirectoryEntry = Nothing
Public Enum ADProperties
distinguishedName
displayName
telephoneNumber
samAccountName
manager
title
department
givenName
sn
End Enum
entry = New DirectoryEntry("LDAP://DC=asia,DC=contoso,DC=com")
Dim lstSearch As List(Of LDAPSearchResult) = New List(Of LDAPSearchResult)
lstSearch = Search(ADProperties.samAccountName, parts(1).ToString())
If Not lstSearch Is Nothing AndAlso lstSearch.Count > 0 Then
For Each a As LDAPSearchResult In lstSearch
email = a.UserPrincipalName
userid = a.ComputerUserId
name = a.GivenName
Exit For
Next
Public Function Search([property] As ADProperties, propertyValue As [String]) As List(Of LDAPSearchResult)
Dim lstSearchResults As New List(Of LDAPSearchResult)()
Try
Dim search__1 As New DirectorySearcher(entry)
Dim resultCollection As SearchResultCollection
LoadProperties(search__1)
search__1.Filter = String.Concat("(", [property].ToString(), "=", propertyValue, ")")
resultCollection = search__1.FindAll() //Exception is caught here
If resultCollection IsNot Nothing Then
For Each result As SearchResult In resultCollection
Dim objSearchResult As New LDAPSearchResult()
MapToObject(result, objSearchResult)
lstSearchResults.Add(objSearchResult)
Next
End If
Catch ex As Exception
Throw New Exception(ex.Message.ToString())
End Try
Return lstSearchResults
End Function
Private Sub MapToObject(result As SearchResult, ByRef objSearchResult As LDAPSearchResult)
Try
If result.Properties("title").Count > 0 Then
objSearchResult.Title = result.Properties("title")(0).ToString()
End If
If result.Properties("distinguishedName").Count > 0 Then
objSearchResult.distinguishedName = result.Properties("distinguishedName")(0).ToString()
End If
If result.Properties("displayName").Count > 0 Then
objSearchResult.displayName = result.Properties("displayname")(0).ToString()
End If
If result.Properties("telephoneNumber").Count > 0 Then
objSearchResult.telephoneNumber = result.Properties("telephoneNumber")(0).ToString()
End If
If result.Properties("samAccountName").Count > 0 Then
objSearchResult.samAccountName = result.Properties("samAccountName")(0).ToString()
End If
If result.Properties("department").Count > 0 Then
objSearchResult.department = result.Properties("department")(0).ToString()
End If
If result.Properties("givenName").Count > 0 Then
objSearchResult.FirstName = result.Properties("givenName")(0).ToString()
End If
If result.Properties("sn").Count > 0 Then
objSearchResult.LastName = result.Properties("sn")(0).ToString()
End If
Catch ex As Exception
ex.Message.ToString()
End Try
End Sub
Fehler eingefügt, wie unten
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
System.DirectoryServices.DirectoryEntry.Bind()
System.DirectoryServices.DirectoryEntry.get_AdsObject()
System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
Bitte helfen
Zeigen Sie die vollständige Ausnahme. –
Im Folgenden finden Sie die komplette Ausnahme bei System.DirectoryServices.DirectoryEntry.Bind (Boolean throwIfFail) bei System.DirectoryServices.DirectoryEntry.Bind() bei System.DirectoryServices.DirectoryEntry.get_AdsObject() bei System.DirectoryServices.DirectorySearcher. FindAll (Boolean findMoreThanOne) bei .Search (ADProperties -Eigenschaft, String propertyValue)] – ssuhas76
Sie fehlen der Nachricht Nachricht der Ausnahme! Bitte füge die erste Zeile zu deinem Code hinzu - der Code, den du zeigst, ist der Ausnahme-Stack-Trace ohne Ausnahmebedingung! –