2010-07-07 8 views
1

Sortez avec l'ancien et avec le nouveau (er). Je range un vieux service asmx de vb.net asp.net 2.0 en faveur d'un nouveau service WCF C# .net asp.net 4.0 brillant.Résolution ambiguë du nom (anr = * ma *) équivalente dans .NET 3.5 DirectoryServices.AccountManagement

Mon ancien service utilisait System.DirectoryServices.DirectorySearcher avec un filtre anr = et permettait une recherche de style Google pour les objets utilisateur à partir d'un champ de saisie simple.

Je voudrais vraiment profiter de 3,5 mais de System.DirectoryServices.AccountManagement ont seulement été en mesure de trouver des variations de « la requête par l'exemple » de Microsoft:

UserPrincipal u = new UserPrincipal(ctx); 
u.GivenName = "Jim"; 
u.Surname = "Daly"; 
PrincipalSearcher ps = new PrincipalSearcher(); 
ps.QueryFilter = u; 
PrincipalSearchResult<Principal> results = ps.FindAll(); 

Ma question est, dois-je dépoussiérer mon code DirectorySearcher pour les recherches de type anr ou est-ce que certaines fonctions de recherche ambiguës sont manquantes dans l'espace de noms AccountManagement?

Merci beaucoup.

J.

Répondre

5

Vous pourriez être en mesure d'écrire votre propre implémentation de UserPrincipal qui expose une propriété personnalisée:

[DirectoryObjectClass("user")] 
[DirectoryRdnPrefix("CN")] 
public class CustomUserPrincipal : UserPrincipal 
{ 
    public CustomUserPrincipal (PrincipalContext context) : base (context) 
    { 
    } 

    [DirectoryProperty("anr")] 
    public string Anr 
    { 
     get { return (string)ExtensionGet ("anr")[0]; } 
     set { ExtensionSet ("anr", value); } 
    } 
} 

Utilisation

var u = new CustomUserPrincipal(ctx) { Anr = "*mr*" }; 
var ps = new PrincipalSearcher() { QueryFilter = u }; 
var results = ps.FindAll(); 
+0

Nous vous remercions de votre solution, il fonctionne bien pour moi sauf une chose: Quand j'utilise le * en tant que joker, je n'obtiens aucun résultat. Il s'avère que le caractère générique n'est pas nécessaire si vous recherchez une propriété anr. Malgré cela cela fonctionne plutôt bien. T – Lukas