System.DirectoryServices jest wolny?
Używam poniższego kodu, aby wyszukać informacje w aktywnym katalogu, gdy użytkownik loguje się do witryny. Działając przeciwko lokalnej domenie jest bardzo szybki, ale działając przez VPN na zdalną zaufaną domenę, jest bardzo powolny (zajmuje około 7 lub 8 sekund). Uruchomienie dsa.msc z tego samego pola do domeny zdalnej jest prawie tak szybkie, jak uruchomienie go lokalnie.
Korzystam z filtrowania właściwości, aby uzyskać minimalną możliwą ilość danych, więc czy w tym scenariuszu jest coś z natury powolnego w System.DirectoryServices lub czy ktoś ma jakieś wskazówki, jak poprawić wydajność?
Połączenie sieciowe w sieci VPN jest w porządku, tylko ten kod działa powoli.
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);
}
}
}
}
}