Question

J'ai essayé de trouver un moyen d'annuler une recherche AD de longue durée dans System.DirectoryServices.Protocols. Quelqu'un peut-il aider?

J'ai examiné les attributs supportControl / supportedCapabilities sur RootDSE et ils ne contiennent pas l'OID 1.3.6.1.1.8. Je pense donc que cela signifie qu'il ne prend pas en charge l'opération étendue LDAP CANCEL telle que définie ici: http://tools.ietf.org/html/rfc3909

Cela laisse la commande LDAP ABANDON d'origine (voir ici pour liste). Mais il ne semble pas y avoir de correspondance Classe DirectoryRequest .

Quelqu'un a des idées?

Était-ce utile?

La solution

Je pense avoir trouvé ma réponse: alors que je lisais votre proposition, Martin, je suis tombé sur le Abandon de la méthode LdapConnection. Je ne m'attendais pas à le trouver ici: à partir de la documentation LDAP, je m'attendais à le trouver comme un autre message LDAP, mais les membres de MS semblent l'avoir traité comme un cas spécial. Si quelqu'un connaît une implémentation de LDAP non-MS et peut dire si l'approche MS est typique, j'apprécierais que cela améliore ma compréhension.

Autres conseils

Je pense, mais je ne suis pas positif, il n'y a pas de requête asynchrone avec une annulation. Il a une propriété asynchrone, mais il permet de remplir une collection, ce qui n'a rien à voir avec l'annulation. Le mieux que je puisse faire est de placer votre requête dans un fil de travail d’arrière-plan et de placer un rappel asynchrone qui traitera la réponse à son retour. Si l'utilisateur décide d'annuler, vous pouvez simplement annuler le thread de travail en arrière-plan. Vous libérerez votre application, même si vous n'avez pas libéré le serveur LDAP jusqu'à ce qu'il ait terminé sa requête. Vous trouverez des informations sur les threads de travail en arrière-plan à l'adresse http: //www.c. -sharpcorner.com/UploadFile/LivMic/BGWorker07032007000515AM/BGWorker.aspx N'oubliez pas d'appeler .Dispose () lorsque vous nettoyez vos objets Active Directory pour éviter les fuites de mémoire.

Si la requête génère également de nombreuses données, vous pouvez les abandonner via la pagination . . Spécifiez un PageResultRequestControl . option dans la requête, donnant une taille de page assez basse (IIUC, 1000 étant la taille de page par défaut). IIUC, vous enverrez de nouvelles demandes chaque fois que vous obtiendrez une page (en passant les cookies d’une réponse à la demande suivante). Lorsque vous choisissez d'annuler la requête, envoyez une autre requête avec zéro résultat attendu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top