2010-10-12 29 views
1

J'utilise le type DirectoryServices.Protocols.SearchRequest pour effectuer une requête sur un magasin OpenDS afin d'extraire certaines entrées. Je veux être en mesure de contrôler quels attributs sont retournés pour les entrées dans la réponse et je pensais que la propriété "Attributs" le ferait. Cependant cette propriété ne dispose pas d'un setter donc je ne peux pas faire quelque chose comme ceci: -Impossible de spécifier les attributs à renvoyer lors de l'interrogation d'un magasin LDAP

SearchRequest searchRequest = new SearchRequest 
              { 
               DistinguishedName = hubTable, 
               Filter = ldapFilter, 
               Scope = SearchScope.Subtree,             
               Attributes = new StringCollection{"Id", "File"} 
              }; 
      //run the query and get the results 
      SearchResponse results = connection.SendRequest(searchRequest) as SearchResponse; 

Quelqu'un peut-il me diriger vers ce que je devrais faire pour filtrer la demande pour retourner uniquement les entrées avec les attributs spécifiés et non tous leur.

Répondre

0

Ironiquement cela a fonctionné: -

SearchRequest searchRequest = new SearchRequest(hubTable, ldapFilter, SearchScope.Subtree, new[] { "AppId", "File" }); 
0

Y a-t-il une raison pour laquelle vous utilisez SearchResuest? Dans tous les cas, vous pouvez utiliser la classe DirectorySearcher http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher.aspx pour rechercher des entrées. Voici un exemple de recherche 1 résultat http://msdn.microsoft.com/en-us/library/system.directoryservices.searchresult.aspx. Utilisez la méthode FindAll pour obtenir tous les résultats.

+0

Pour autant que je compris System.DirectoryServices a été principalement utilisés dans les rapports avec Active Directory. Pour les autres implémentations LDAP, les exécutions recommandées utilisaient l'espace de noms System.DirectoryServices.Protocols. SearchRequest est le type le plus couramment utilisé pour effectuer des récupérations sur n'importe quelle implémentation ldap. – Cranialsurge

0

Je suppose que vous auriez besoin d'un filtre différent.

Je suis sûr que votre ldapfilter a quelques critères. Vous auriez besoin de ET (avec &) pour inclure (&(Id=*)(File=*)) afin d'obtenir les résultats que vous recherchez.