Pregunta

La extensión UserPrincipal para aprovechar su base de propiedades ... corriendo en un problema cuando sobrecargamos el método FindByIdentity().

Desde el ejemplo de Microsoft en http: // MSDN. microsoft.com/en-us/library/bb384372%28VS.90%29.aspx (partes excluidos por razones de brevedad):

[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);
   } 
}

Si tomo el código exacto del ejemplo de MSDN y pegarlo en mi aplicación, no funciona. La llamada a la rentabilidad InetOrgPerson.FindByIdentity() nula, tales como:

if (null == InetOrgPerson.FindByIdentity(principalContext, UserName)) {
     throw new Exception("bah");
}

De hecho, desde dentro InetOrgPerson.FindByIdentity(), la llamada a rendimientos FindByIdentityWithType() null, como tal:

if (null == FindByIdentityWithType(context, typeof(InetOrgPerson), identityType, identityValue) {
    throw new Exception("bah");
}

Sin embargo, la llamada:

FindByIdentityWithType(context, typeof(UserPrincipal), identityType, identityValue)

Me da el objeto de usuario que quiera. Excepto que no puedo usar eso, porque no se puede convertir en el objeto InetOrgPerson necesito devolver.

¿Qué ocurre? Yo esperaría propio código de ejemplo de Microsoft para el trabajo, pero no es así, por lo que, naturalmente, el código que estoy tratando de escritura basado en el ejemplo no funciona, tampoco. Alguien ha hecho este trabajo?

Gracias de antemano! James

¿Fue útil?

Solución

Asegúrese de que el usuario está buscando en realidad pertenece a la clase inetOrgPerson.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top