2016-09-19 4 views
0

Я разработал приложение, которое ведет переговоры с сервером Directory Server и получает информацию о пользователе.DirectorySearcher возвращает ERROR_MORE_DATA

Это приложение является общим и может разговаривать с Active Directory или любыми другими службами каталогов.

В одном случае, когда я использую это приложение для чтения данных из Radiant One VDS, приложение выходит из строя с помощью ERROR_MORE_DATA. Ниже приведен код, который возвращает эту ошибку:

try 
{ 
    using (DirectoryEntry de = new DirectoryEntry("LDAP://" + server + "/" + basedn, username, pwd,AuthenticationTypes.None)) 
    { 
    using (DirectorySearcher Searcher = new DirectorySearcher(de)) 
    { 
     Searcher.Filter = "(&(objectClass=user))"; 
     Searcher.ReferralChasing = ReferralChasingOption.All; 
     Searcher.PropertiesToLoad.Add("cn"); 
     Searcher.PropertiesToLoad.Add("memberof"); 
     Searcher.PageSize = 1000; 

     using (SearchResultCollection allUsers = Searcher.FindAll()) 
     {        
     foreach (SearchResult user in allGroups) 
     { 
      . 
      . 
      . 
      . 
     } 
     } 
    } 
    } 
} 
catch(System.Exception ex) 
{ 
} 

В приведенном выше коде, Searcher.FindAll()ERROR_MORE_DATA возвращается. Когда я искал, я нашел статью this.

Но эта статья говорит о .NET 1.0 и мое приложение работает с .NET 3.5

Вы можете кто-нибудь, пожалуйста, помогите мне здесь? Есть ли способ исправить это, не делая для DirectoryServices.Protocols?

ответ

0

Вообще, этот вопрос приходит в следующей ситуации: -

Если одна или несколько записей находятся в сети и размер буфера не достаточно, чтобы удержать его. см. ERROR_MORE_DATA

Вам просто нужно указать размер буфера. см: specify the size of buffer in network call

Смежные вопросы