0
votes

Comportement inattendu à l'aide du serveur de répertoires "Server n'est pas opérationnel"

Je ressens un problème très étrange à l'aide de la classe DirectorySearcher lors de la recherche de groupes d'interrogation sur LDAP.

using(var directoryEntry = new DirectoryEntry(thePath,theUserName,ThePassword)
{
var ONLY_GROUPS = "(objectClass=group)"
var filter = string.format("(&{0}({1}=*{2}*))",ONLY_GROUPS,"Name","theGroupName");
using(var searcher = new DirectorySearcher(directoryEntry,filter))
{
...
 searcher.FindAll();
...
}


3 commentaires

Vous pouvez utiliser Explorateur de processus pour voir la demande de réseau que votre Le programme essaie de faire (IP et Port). Cela pourrait vous en dire plus sur ce que c'est essayer de faire et pourquoi cela échoue.


Est ThePath pointant sur LDAPS (port 636)?


Un autre progrès que nous avons, je ne sais pas si cela est associé, la réponse à la réaction des groupes d'un chiffre d'affaires problématique de 2,5 Mo (ne semble pas beaucoup). et le problème se produit sur les LDAP. toujours comme je l'ai dit, les groupes d'obtention fonctionnent dans un code externe


4 Réponses :


0
votes

Puisque vous utilisez des LDAP, il est probablement un problème avec le certificat SSL. Si le certificat n'est pas confié à l'ordinateur qui initie la connexion, l'exception que vous obtenez est exactement la même que si le serveur n'a pas pu être contacté du tout.

sur un ordinateur problématique, téléchargez le certificat à partir du serveur en utilisant < Un href = "https://stackoverflow.com/a/22251597/1202807"> Ce script PowerShell : xxx

remplace exemple.com < / code> dans la première ligne avec votre nom de domaine. Laissez le https: // et le : 636 (sauf si vous exécutez des ldaps à partir d'un port non standard).

Après avoir exécuté ce script , il y aura un fichier certificat.cer dans le répertoire actuel. Ouvrez-le pour le voir. Vous verrez un avertissement si le certificat n'est pas fait confiance. Si ce n'est pas le cas, le certificat racine doit être ajouté aux certificats racines de confiance de l'ordinateur actuel.


7 commentaires

Bien que cela semble semble qu'il est lié au certificat LDAP. Comme je l'ai dit, il ne s'agit pas d'une application de console qui exécute le même code qui fonctionne. De plus, nous pouvions voir avec Wireshark Les données sont renvoyées sur le serveur, mais elles sont bloquées plus tard. Qui augmente un autre problème possible, peut-on bloquer les réponses d'une taille définie? Peut-il être lié à certains attendre à une API Web?


Avez-vous vérifié le certificat quand même? Le certificat doit être approuvé et vous devez accéder au domaine avec le même nom de domaine utilisé dans le certificat (si le certificat a le nom d'un contrôleur de domaine, vous devez nous envoyer le nom complet du contrôleur de domaine dans le LDAP. chemin).


Autre code pourrait éventuellement ignorer les problèmes de certification de différentes manières. Pouvez-vous montrer une partie du code qui fonctionne?


Le même code que mentionné dans mon poste, je ne crois pas que ce soit un problème de certificat, car comme je l'ai mentionné, une autre requête LDAP fonctionne, pour obtenir les contrôleurs de domaine.


Est ThePath exactement le même dans celui qui fonctionne et celui qui ne le fait pas? En outre, quel est le code que vous utilisez pour trouver des contrôleurs de domaine?


D'abord, je voudrais vous remercier pour l'aide, il n'y a rien de spécial lors de l'obtention des contrôleurs de domaine, le même code. Le filtre est différent


Pouvez-vous ajouter ce code à votre question, y compris les valeurs que vous utilisez pour ThePath ? (Vous pouvez remplacer votre nom de domaine par «exemple.com») Il doit y avoir quelque chose de différent.



0
votes

Voici le code pour obtenir des groupes LDAP xxx

Voici le code permettant d'obtenir des contrôleurs de domaine LDAP xxx


2 commentaires

Une clarification, le code permettant d'obtenir des groupes lancons COMException "Server n'est pas opérationnel" via une application Web. et le même code fonctionne pour la demande de console


Un autre point important, la Comexception n'est pas "Server n'est pas opérationnelle" mais le délai d'attente qui pose la question. ce qui pourrait être fait sur le niveau IIS ou le web.config qui pourrait causer des problèmes de délai d'attente



0
votes

J'aimerais ajouter une autre mise à jour importante sur ce problème. Il semble que la première tentative d'exécution de la requête LDAP fonctionne! .

Signification après Iisresres, la requête du groupe LDAP fonctionne Mais alors j'attends 120 secondes, les choses cessent de travailler et que la requête LDAP est bloquée / la main sur la scène de la liaison Après un autre iisrest, le groupe LDAP à nouveau fonctionne, attendez 120 secondes le même résultat


0 commentaires

0
votes

J'ai maintenant une autre étape avec la compréhension de mon problème

après avoir appelé le code mentionné ci-dessus Je pouvais voir après avoir exécuté netstat sur la machine LDAP

netstat -nat | Findstr My_IP_Address | FindStr: 389 Je pouvais voir que la connexion reste établie même lorsque l'utilisation de la section est effectuée

TCP LDAP_IP_Address: 389 my_IP_Address: 24730 Invité établi

Je pouvais voir qu'il existe un autre type d'authentification de paramètre, par défaut sécurisé Lors de l'utilisation de mon code de cette façon, la connexion est disposée après l'utilisation de la section xxx


0 commentaires