El siguiente código funciona bien desde una variedad de máquinas en nuestro dominio.FindByIdentity - diferencias de rendimiento
var context = new PrincipalContext(ContextType.Domain);
var principal = UserPrincipal.FindByIdentity(context, @"domain\username")
Sin embargo, si ejecuta este código similar en una máquina que no está en un dominio, que funciona, pero la línea FindByIdentity toma 2+ segundos.
var context = new PrincipalContext(ContextType.Machine);
var principal = UserPrincipal.FindByIdentity(context, @"machinename\username")
Puede esta diferencia de rendimiento se abordarán mediante el suministro de parámetros especiales para el constructor PrincipalContext y/o el método FindByIdentity? ¿Hay alguna configuración en IIS o Windows que pueda modificarse?
Por lo menos, ¿alguien puede decirme por qué podría ser más lento en el segundo escenario?
El código se ejecuta desde una aplicación ASP.NET MVC 3 alojada en IIS 7.5 (Integrated Pipeline) en Windows Server 2008 R2.
Si está familiarizado con Network Monitor o Wireshark, puede capturar paquetes de red para ver cuánto tiempo lleva hablar con los controladores de dominio cada vez que se ejecuta esta consulta. Eso puede darte una pista. Esto es solo un problema activo del lado del directorio, nada está mal en su código. –
Lo único peculiar es que es más rápido con un controlador de dominio. El entorno lento solo es un grupo de trabajo, por lo que no debería estar llegando a nada. Puedo probar Wireshark para ver si veo algo inusual. – Mayo