2010-10-20 2 views
2

J'écris une application .NET pour interroger un serveur LDAP, et je ne peux pas comprendre comment regarder les exceptions et comprendre ce qui s'est passé sur l'extrémité LDAP. J'utilise DirectoryServices et essaye d'éviter tout ce qui est spécifique à ActiveDirectory.Comment identifier les erreurs LDAP à partir des exceptions émises par les appels C# System.DirectoryService?

créer un DirectorySearcher, puis faire

try 
{ 
    SearchResult result = searcher.FindOne(); 
} 
catch(Exception e) 
{ 
    // now what? 
} 

J'attends certains types d'erreurs de se produire sur la fin LDAP, comme utilisateur introuvable, compte désactivé, etc., et je voudrais les identifier erreurs particulières. Existe-t-il des types d'attentes spécifiques?

Je remarque que innerException a un _COMPlusExceptionCode. Est-ce un indicateur fiable de ce qui a mal tourné du côté LDAP? Je n'ai pas été en mesure de trouver une énumération de ces codes d'exception.

Des suggestions?

Répondre

1

Il existe une liste de tous les codes d'erreur ADSI here qui contiennent des erreurs génériques COM et ADSI génériques, ainsi que le LDAP error codes for ADSI 2.0 spécifique.

Les erreurs LDAP sont notoirement difficiles à traiter - le plus souvent, vous obtenez simplement un «serveur incapable d'effectuer» ou quelque chose comme ça, sans trop d'explications sur les raisons pour lesquelles le serveur est incapable de faire son travail.

+0

C'est pourquoi je suggère de traiter toutes les erreurs comme étant également fatales et de montrer l'explication à l'utilisateur. –

+0

@Steven Sudit: seulement cette "explication" (c'est-à-dire le message d'exception fourni par ADSI/Win32) n'a généralement pas beaucoup de sens pour l'utilisateur, soit :-( –

+0

Je veux être capable de séparer quelques cas, pour distinguer les problèmes de configuration de mauvaises connexions, et l'utilisateur ne trouve pas de mauvais mot de passe Merci - cela aide beaucoup! –

0

Appelez maintenant le .ToString() et regardez le texte lisible par l'homme.

Questions connexes