Probleme mit Zugriff auf Active Directory

WeiblGe

Mitglied
Hallo!
Ich habe folgendes Problem:
Ich schreibe ein Windows Service welches aus dem AD alle User mit einer Mailbox ausliest und danach von jedem gefundenen User die Mailboxgröße bestimmt. Hab das Service auf einem Server mit Win2000 und Exchange2000 getestet -> funktioniert einwandfrei.
Danach habe ich es auf einem Windows Server 2003 getestet und ich bekomme folgende Fehlermeldung:

System.Runtime.InteropServices.COMException (0x8007203A): Der Server ist nicht funktionstüchtig
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_AdsObject()
at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
at System.DirectoryServices.DirectorySearcher.FindAll()
at MailboxSizeLib.MailboxSize.searchUser(String strDomain)

Hier ist der Code den ich verwende:
private void searchUser(string strDomain)
{

try
{
DirectoryEntry objEntry = new DirectoryEntry("LDAP://" + strDomain);
DirectorySearcher objSearcher = new DirectorySearcher(objEntry);

objSearcher.Filter = "(&(objectClass=user)(MsExchMailboxGuid=*))";
SearchResultCollection objSearchResult = objSearcher.FindAll();
.....

Weiß vielleicht jemand woran das liegen könnte?

Danke für eure Hilfe

Mfg

Gerald
 
hmm, das liegt ja eigentlich nicht an deinem Code, sondern dass der Server nicht läuft:

Der Server ist nicht funktionstüchtig

Vielleichjt ist dein LDAP-Pfad nicht korrekt. Ich weiß ja nun nich was in "strDomain" drin steht...

ciao Anke
 
Also in strDomain steht der Domainname drinnen, den hole ich mir vorher mit dieser Methode:

private StringCollection GetDomainList()
{
StringCollection domainList = new StringCollection();
try
{
DirectoryEntry objEntry = new DirectoryEntry("LDAP://");
// Nach der objectCategory vom Typ "Domain" suchen
DirectorySearcher objSearcher = new DirectorySearcher("objectCategory=Domain");
SearchResultCollection objColl = objSearcher.FindAll();
//Den Domain Namen auslesen und in der StringCollection speichern
foreach (SearchResult objSearchResult in objColl)
{
ResultPropertyCollection resultPropColl = objSearchResult.Properties;
foreach(object domainName in resultPropColl["name"])
{
domainList.Add(domainName.ToString());
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return domainList;
}

Keine Ahnung warum es nicht funktioniert, habs auf einem TestServer(Windows Server 2003) ausprobiert und da funktioniert es auch. Es funktioniert nur nicht auf diesem einen Server. Aber auf dem muss es funktionieren denn da soll das Service installiert werden.

Bitte um Hilfe.

Lg
 
Hmm,

was ist denn, wenn du den Servernamen direkt angibtst. Hast du das schon einmal probiert? Bzw. kannst du dir ja mal den String ausgeben lassen, den er ermittelt, vielleicht stimmt dieser nicht...

Ich geben den String immer direkt an, bzw. hinterlege ihn in der web.config. Also z.B. "LDAP://computername"
 
Habe folgendes gemacht:

DirectoryEntry objEntry = new DirectoryEntry("LDAP://RootDSE");
string host = (string) objEntry.Properties["dNSHostName"].Value;

Hol mir den Hostname und erstelle dann einen neuen DirectoryEntry mit LDAP://hostname -> funktioniert.

Danke für deine Hilfe.

Mfg

Gerald
 
Zurück