C# 在查找所有用户的过程中,Active Directory不会正确返回所有用户

C# 在查找所有用户的过程中,Active Directory不会正确返回所有用户,c#,active-directory,C#,Active Directory,我正在尝试从Active Directory中的组中获取所有用户。一切都很好,但从349用户到最后,有些东西不起作用。它仍然正确保存SamAccountName,但其他属性为null,但实际上它有值。这个问题的解决方案是什么 PrincipalContext ADDomain = new PrincipalContext(ContextType.Domain, daneAD.kontroler, AD.editDomena(daneAD.domena), daneAD.user, daneAD.

我正在尝试从Active Directory中的组中获取所有用户。一切都很好,但从349用户到最后,有些东西不起作用。它仍然正确保存SamAccountName,但其他属性为null,但实际上它有值。这个问题的解决方案是什么

PrincipalContext ADDomain = new PrincipalContext(ContextType.Domain, daneAD.kontroler, AD.editDomena(daneAD.domena), daneAD.user, daneAD.haslo);
UserPrincipal u = new UserPrincipal(ADDomain);

GroupPrincipal group = GroupPrincipal.FindByIdentity(ADDomain, daneAD.grupa);

if (group != null)
{
    foreach (Principal p in group.GetMembers())
    {
        UserPrincipal result = p as UserPrincipal;

        if (result != null && result.DisplayName != null)
        {
            ADoutput user = new ADoutput();

            user.username = result.SamAccountName;
            user.firstname = result.GivenName;
            user.surname = result.Surname;
            user.mail = result.EmailAddress;
            user.isActive = result.Enabled;
            user.department = result.GetProperty("department");

            if (result.AccountExpirationDate.HasValue)
            {
               DateTime expiration = result.AccountExpirationDate.Value.ToLocalTime();

               user.lockdate = string.Format("TIMESTAMP '{0}-{1}-{2} {3}:{4}:{5}.{6}'", expiration.Year, expiration.Month, expiration.Day, expiration.Hour, expiration.Minute, expiration.Second, expiration.Millisecond);
            }
            else
            {
                user.lockdate = "null::timestamp";
            }

            // I save user there
        }
    }
}

旁注:您可以通过使用:user.lockdate=string.FormatTIMESTAMP“{0:yyyy-M-dd HH:mm:ss.fff}”来简化代码;更简单的是:lockdate=expiration.ToStringyyyy-M-dd HH:mm:ss.fff;至于这个问题,很难说没有数据访问权限,但可能是一个组中有一个组,或者您作为用户运行时无法访问某些帐户?嗯,但是可以正确地只返回SamAccountName?我想知道为什么问题只出现在最后创建的用户身上。我还尝试了GetMemberstrue。也许可以尝试直接连接到一个受影响的用户,看看它是否有效。您可以首先从组中收集用户LDAP路径列表,然后循环遍历这些路径并绑定到每个用户。