2017-10-10 1 views
0

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

+0

Zeigen Sie die vollständige Ausnahme. –

+0

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

+0

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! –

Antwort

0

Problem gelöst, indem Sie den folgenden Code in das Hinzufügen web.config

<identity impersonate="false"> 
Verwandte Themen