Hallo zusammen,
ich bin seit ca. einer Woche auf der Suche nach einer Lösung, wie ich mittels C# eine LDAP Abfrage an das Domino Directory absetzen kann ohne irgendeine Form der Notesintegration (Interop/Notes Client) zu bedienen.
In VBS habe ich das am laufen tue mich nur irgendwie sehr schwer damit, das in C# zu realisieren, weiß aber nicht, wo's hängt.
In VBS sieht das ganze bei mir so aus und funktioniert:
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = "SELECT * FROM 'LDAP://192.168.1.2:389' WHERE objectClass='dominoPerson'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Set objUser = GetObject(objRecordSet.Fields("ADsPath").Value)
Debug.Print objUser.Name
objRecordSet.MoveNext
Loop
Es geht konkret dadrum, das ich in einem C# Projekt einen übergebenen Namen dahingehend überprüfen möchte, ob es einen entsprechenden User im AD und im Domino Dir. gibt oder nicht. Der AD Part ist garkein Problem und funktioniert, nur der Notespart in C# macht mir massiv Kopfzerbrechen, aber vielleicht stehe ich auch einfach nur auf dem Schlauch.
Bisher habe ich C# folgendes für den Notespart:
DirectorySearcher search = new DirectorySearcher();
search.SearchRoot = new DirectoryEntry("LDAP://192.168.1.2:389");
search.Filter = string.Format("(&(objectclass=dominoPerson)(cn=" + sUsername + "))");
search.PropertiesToLoad.Add("cn");
SearchResult SearchResult = search.FindOne();
Ergebnis ist ein "Protocol error".
Kann mir jemand sagen was ich falsch mache?!
Vielen Dank & Gruß,
Markus