Il seguente codice funziona correttamente da una varietà di macchine sul nostro dominio.FindByIdentity - differenze di prestazioni
var context = new PrincipalContext(ContextType.Domain);
var principal = UserPrincipal.FindByIdentity(context, @"domain\username")
Tuttavia, se corro questo codice simile su una macchina che non è su un dominio, funziona ma la linea FindByIdentity prende 2+ secondi.
var context = new PrincipalContext(ContextType.Machine);
var principal = UserPrincipal.FindByIdentity(context, @"machinename\username")
Può questa differenza di prestazioni da affrontare, fornendo parametri speciali al costruttore PrincipalContext e/o il metodo FindByIdentity? C'è un'impostazione in IIS o Windows che potrebbe essere modificata?
Per lo meno, qualcuno può dirmi perché potrebbe essere più lento nel secondo scenario?
Il codice è in esecuzione da un'app ASP.NET MVC 3 ospitata in IIS 7.5 (Pipeline integrata) su Windows Server 2008 R2.
Se si ha familiarità con Network Monitor o Wireshark, è possibile acquisire i pacchetti di rete per vedere quanto tempo occorre per parlare con i controller di dominio ogni volta che viene eseguita questa query. Questo può darti un suggerimento. Questo è solo un problema di directory lato attivo, niente di sbagliato nel tuo codice. –
L'unica cosa strana è che è più veloce con un controller di dominio. L'ambiente lento è solo gruppo di lavoro quindi non dovrebbe raggiungere alcun risultato. Posso provare Wireshark per vedere se trovo qualcosa di insolito. – Mayo