不完整的组枚举 - 使用C#.net的AD

时间:2013-07-22 15:09:01

标签: c# .net active-directory

我有一个尝试过的真实函数,用于确定AD用户是否是特定组的成员。多年来一直使用它没有问题。到现在。我正在使用C#.net开发一个新的应用程序,并创建了一个新的AD组来控制访问。我的帐户是相关群组的成员,因此应通过此验证,但事实并非如此。这是代码:

public bool isGroupMember(strUserID)
{
    bool b = false;
    DirectoryEntry root = new DirectoryEntry("LDAP://DC=domain,DC=com", strADUserID, strADPassword);
    DirectorySearcher search = new DirectorySearcher(root);
    search.Filter = "samAccountName=" + strUserID;
    SearchResult result = search.FindOne();
    short groups = result.Properties("memberOf").Count() - 1;
    string Group = null;
    short i = 0;
    while (!(b == true | i == groups)) {
        Group = result.Properties("memberOf")(i).ToString;
        if (Group == "CN=MyGroup,OU=GroupOU,DC=domain,DC=com") {
            b = true;
        }
        i = i + 1;
    }
    return b;
}

问题在于,虽然我的帐户是22个群组的成员,但行

short groups = result.Properties("memberOf").Count() - 1;

只返回20个不是22的组,而我之后的组(是新的)是21或22组,所以循环在它到达组之前已经退出。为什么群组枚举不完整?为什么20组应该是22?

0 个答案:

没有答案