DirectorySearcher返回ERROR_MORE_DATA

时间:2016-09-19 07:08:13

标签: c# active-directory directoryservices

我开发了一个与Directory Server通信并获取用户信息的应用程序。

此应用程序是通用的,可以与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

1 个答案:

答案 0 :(得分:0)

通常,此问题出现在以下情况中: -

如果在网络中找到一个或多个条目,并且缓冲区大小不足以容纳它。 见ERROR_MORE_DATA

您只需指定缓冲区的大小即可。 见:specify the size of buffer in network call