Hab kein AD-spezifisches Subforum gefunden und poste daher hier.
Folgendes C#-Programm funktioniert wie erwartet, wenn es auf dem DC oder einem Member Server ausgeführt wird:
using System;
using System.DirectoryServices;
namespace Tests.LDAP {
class Program {
static void Main(string[] args) {
var server = "dc.domain.example.com";
var port = 636;
var container = "CN=Users,DC=domain,DC=example,DC=com";
var path = $"LDAP://{server}:{port}/{{0}}{container}";
var user = "Administrator@domain.example.com";
var password = "s0m3p4ssw0rd";
var de = new DirectoryEntry(string.Format(path, "CN=User Name,"), user, password, AuthenticationTypes.SecureSocketsLayer);
var prop = de.Properties["cn"]; // <-- Hier wird die Exception geworfen
Console.WriteLine($"cn: {prop}");
Console.ReadKey();
}
}
}
Wenn ich das Programm aber ausserhalb der Domäne laufen lasse, wird folgende Exception geworfen:
Unhandled Exception: System.Runtime.InteropServices.COMException: The server is not operational.
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_AdsObject()
at System.DirectoryServices.PropertyValueCollection.PopulateList()
at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
at Tests.LDAP.Program.Main(String[] args) in C:\source\Tests\Tests.LDAP\Program.cs:line 17
Wenn ich mit Apache Directory Studio mit folgenden Einstellungen verbinde, funktioniert alles problemlos:
Edit Abt: Bilder-Links entfernt.
Es muss sich also um ein Library- oder ein API-Benutzungsproblem handeln.
Hat hier jemand einen Tipp, wie ich das zum Laufen bekommen kann?