Расширение UserPrincipal; FindByIdentity () терпит неудачу
-
29-09-2019 - |
Вопрос
Расширение UserPrincipal
Чтобы воспользоваться преимуществами встроенных свойств ... сталкиваться с проблемой, когда мы перегружаем FindByIdentity()
метод.
Из примера Microsoft в http://msdn.microsoft.com/en-us/library/bb384372%28vs.90%29.aspx (Части исключены для краткости):
[DirectoryRdnPrefix("CN")]
[DirectoryObjectClass("inetOrgPerson")]
public class InetOrgPerson : UserPrincipal {
// Implement the overloaded search method FindByIdentity
public static new InetOrgPerson FindByIdentity(PrincipalContext context,
string identityValue) {
return (InetOrgPerson)FindByIdentityWithType(context,
typeof(InetOrgPerson),
identityValue);
}
// Implement the overloaded search method FindByIdentity
public static new InetOrgPerson FindByIdentity(PrincipalContext context,
IdentityType identityType,
string identityValue) {
return (InetOrgPerson)FindByIdentityWithType(context,
typeof(InetOrgPerson),
identityType,
identityValue);
}
}
Если я возьму точный код из примера MSDN и вставлю его в свое приложение, он не работает. Призыв к InetOrgPerson.FindByIdentity()
возвращает NULL, как таковой:
if (null == InetOrgPerson.FindByIdentity(principalContext, UserName)) {
throw new Exception("bah");
}
На самом деле, изнутри InetOrgPerson.FindByIdentity()
, призыв к FindByIdentityWithType()
возвращает NULL, как таковой:
if (null == FindByIdentityWithType(context, typeof(InetOrgPerson), identityType, identityValue) {
throw new Exception("bah");
}
Однако звонок:
FindByIdentityWithType(context, typeof(UserPrincipal), identityType, identityValue)
дает мне объект пользователя, который я хочу. За исключением того, что я не могу этого использовать, потому что это не может быть брошено на InetOrgPerson
объект, который мне нужно вернуть.
Что дает? Я ожидаю, что собственный пример кода Microsoft будет работать, но это не так, поэтому, естественно, код, который я пытаюсь написать на основе примера, также не работает. Кто -нибудь сделал эту работу?
Заранее спасибо! Джеймс
Решение
Убедитесь, что пользователь, которого вы ищете, действительно принадлежит классу inetOrgPerson
.