8
votes

Comment savoir si mon répertoire est vraiment connecté à mon répertoire LDAP?

Je me connecte à un répertoire LDAP en C #. J'ai donc utilisé la classe DirectoryEry.

Lorsque vous effectuez la "nouvelle répertoire" avec adresse, connexion et mot de passe, il est censé se connecter au répertoire LDAP.

Cependant, même si la connexion n'a pas fonctionné, elle revient sans problème et la variable Diricitation de l'entente est définie.

Alors je le fais, je sais que ma connexion est vraiment ouverte? En ce moment, j'utilise un piratage très laid: je mets un "if (mydirectory.schemaentry)" qui génère une exception si la connexion n'était pas établie, car certains des membres du répertoire, tels que Schemaentry, Aren C'est défini si la connexion a échoué. Mais 1: Ça doit être 11/10 sur l'échelle de la laideur 2: cela prend beaucoup de temps avant de faire échouer.

Alors, quel est le bon moyen de faire cela? Sûrement, Microsoft doit avoir fourni quelque chose (même si j'utilise un répertoire LDAP et non un répertoire actif) pour savoir si je suis vraiment connecté?


0 commentaires

4 Réponses :


12
votes

Juste "Nouveauting" Un Directory DirectoryRy fait pas Créer une connexion au magasin LDAP.

Une fois que vous avez commencé à utiliser ses propriétés, ou lorsque vous accédez à la propriété .nativeObject explicitement, vous obtiendrez une connexion au magasin LDAP.

Pour vous assurer que vous êtes connecté, lisez simplement le (répertoire) .nativeObject dans un texte ... Clause de capture - si elle bombe, vous avez un problème, sinon votre la connexion est maintenant opérationnelle et active.

Malheureusement, à ma connaissance, il n'y a pas de propriété ou de méthode que vous pouvez appeler pour déterminer si vous avez ou non connecté avec succès à LDAP à l'aide de DirectoryTry.

marc


0 commentaires

1
votes

OK, la solution de Marc_s était approximativement ce que je faisais (sauf que je cherchais Schemaentry et non natifobject). Mais le délai du délai d'attente est beaucoup trop long (la requête est exécutée pour remplir les valeurs d'autocomplétion pour un formulaire). Je pense que je préfère réellement prétendre que la connexion est ouverte et laissez la requête courir. De cette façon, je peux définir mon propre délai de délai d'attente plus petit.


0 commentaires

2
votes

Vous pouvez vérifier le répertoireientry.properties.count. Si c'est> 0, c'est un objet valide. .Properties n'est jamais nulle - vous serez capable de lire le compte même si vous n'êtes pas connecté à un répertoire valide et un de valide au moins une propriété.

pas d'essai / attrape ou exceptions nécessaires.


1 commentaires

Malheureusement, pas vrai (testé sous .NET 4, en 2015); Ce qui est dommage pour moi, car je cherche un test de non-exception. Bien que le répertoire de répertoire est non nul, elle tente même d'accéder à ses causes de comptage, et que les délais d'erreur (par exemple, le serveur n'est pas opérationnel "si déconnecté).



1
votes

Vous pouvez vérifier le répertoireientry.properties.count. Si c'est> 0, pour un objet valide. Mais laissez toujours dire que votre serveur LDAP est en panne. Vous ne pouvez pas l'identifier avec aucune de ses propriétés.Instead Vous pouvez l'attraper à l'aide de l'essais bloc de capture xxx

espère que cela vous aide


0 commentaires