System.DirectoryServices es lento?

Estoy utilizando el siguiente código para buscar información en el directorio activo cuando un usuario inicia sesión en un sitio web. La ejecución contra un dominio local es muy rápida, pero la ejecución de una VPN a un dominio remoto de confianza es muy lenta (toma alrededor de 7 u 8 segundos). Ejecutar dsa.msc desde el mismo cuadro al dominio remoto es casi tan rápido como ejecutarlo localmente.

Estoy utilizando el filtrado de propiedades para recuperar la cantidad mínima de datos posible, por lo tanto, ¿hay algo intrínsecamente lento acerca de los Servicios de Directorio en este escenario o alguien tiene alguna sugerencia sobre cómo mejorar el rendimiento?

La conexión de red a través de la VPN está bien, solo este código se ejecuta lentamente.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var LDAPConnection = new DirectoryEntry("LDAP://domain/dc=domain,dc=com", "username", "password"))
            {
                LDAPConnection.AuthenticationType = AuthenticationTypes.Secure;
                using (DirectorySearcher Searcher = new DirectorySearcher(LDAPConnection))
                {
                    Searcher.Filter = "(&(&(objectclass=user)(objectcategory=person))sAMAccountName=username)";
                    Searcher.PropertiesToLoad.Add("mail");

                    SearchResult result = Searcher.FindOne(); //this line takes ages!

                    string EmailAddress = result.Properties["mail"][0].ToString();
                    Console.WriteLine(EmailAddress);
                }
            }
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta