Неоднозначное разрешение имен (anr=*ma*) эквивалентно в.NET 3.5 DirectoryServices.AccountManagement
Долой старое и новое. Я откладываю старую услугу "asmx" vb.net asp.net 2.0 в пользу блестящей новой службы WCF C#.net asp.net 4.0.
Моя старая служба использовала System.DirectoryServices.DirectorySearcher с фильтром anr= для достижения хорошего эффекта и позволяла выполнять поиск в Google-стиле пользовательских объектов из одного поля ввода.
Мне бы очень хотелось воспользоваться преимуществами System.DirectoryServices.AccountManagement 3.5, но я смог найти только варианты "запроса по примеру" от Microsoft:
UserPrincipal u = new UserPrincipal(ctx);
u.GivenName = "Jim";
u.Surname = "Daly";
PrincipalSearcher ps = new PrincipalSearcher();
ps.QueryFilter = u;
PrincipalSearchResult<Principal> results = ps.FindAll();
Мой вопрос заключается в том, должен ли я стереть свой код DirectorySearcher для поиска по типу anr, или я упускаю некоторые очевидные неоднозначные возможности поиска в пространстве имен AccountManagement?
Большое спасибо.
J.
1 ответ
Возможно, вы сможете написать собственную реализацию UserPrincipal, которая предоставляет настраиваемое свойство:
[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 ); }
}
}
использование
var u = new CustomUserPrincipal(ctx) { Anr = "*mr*" };
var ps = new PrincipalSearcher() { QueryFilter = u };
var results = ps.FindAll();