AD GroupPrincipal:调用目标抛出了异常

时间:2015-12-02 18:24:08

标签: c# active-directory adsi

我可以在这个用户下运行以下代码,在所有其他情况下都没有问题。出于某种原因,在这种特殊情况下,在将用户添加到组并在查看用户是否已添加之前进行检查时,它会给我这个例外:

  

调用目标引发了异常。

此错误发生在调用行。

这不应该发生。发送的目录对象是正确的,组存在,我可以从中删除成员就好了,我甚至可以添加成员而不作为测试检查。在我的应用程序的其他区域,此代码使用没有错误。我在许多其他应用程序中使用此代码并且已使用它多年。这里发生了什么?我忘记了什么?

private bool userIsMember(string strUser, DirectoryEntry strGroup)
{
    bool result = true;
    try
    {
        object[] args = { strUser };
        object IsMember = strGroup.Invoke("IsMember", args);

        if ((bool)IsMember == true)
        {
            result = true;
        }
        else
        {
            result = false;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Problem with user: " + strUser + "\r\n\r\n" + ex.Message + "\r\n\r\n" + ex.ToString());
    }

    return result;
}

1 个答案:

答案 0 :(得分:1)

如果它在其他应用程序中有效,那么我猜测它为什么不在这里工作的是运行此代码的用户凭据(换句话说,安全性)的不同之处。

但无论如何,如果可以,我会切换到使用System.DirectoryServices.AccountManagement中的类。他们更友好C#:

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "GName");

GroupPrincipal有一个您可以搜索的会员属性。