C# GroupPrincipal.Members.Add(userPrincipal)引发错误

C# GroupPrincipal.Members.Add(userPrincipal)引发错误,c#,asp.net,.net,directoryservices,C#,Asp.net,.net,Directoryservices,我有下面的C#代码,可以将用户添加到现有组中。现在,每次我尝试将用户添加到组时,都会引发以下错误: 无法将“System.\u ComObject”类型的COM对象强制转换为接口类型“IADsGroup”。此操作失败,因为对IID为“{27636B00-410F-11CF-B1FF-02608C9E7553}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT:0x80004002(E_NOINTERFACE)的异常)。System.Direc

我有下面的C#代码,可以将用户添加到现有组中。现在,每次我尝试将用户添加到组时,都会引发以下错误:

无法将“System.\u ComObject”类型的COM对象强制转换为接口类型“IADsGroup”。此操作失败,因为对IID为“{27636B00-410F-11CF-B1FF-02608C9E7553}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT:0x80004002(E_NOINTERFACE)的异常)。System.DirectoryServices.AccountManagement

以下是相关代码:

// Clearing result message variable before using
    sResult = "";

    bool bGroupMemberOf = false;
    using (PrincipalContext sourceContext = new PrincipalContext(ContextType.Domain, sDomainName))
    {
        try
        {
            GroupPrincipal group = GroupPrincipal.FindByIdentity(sourceContext, IdentityType.Name, sGroupName);
            if (group.Members.Contains(sourceContext, IdentityType.SamAccountName, sAccountName))
            {
                sResult += sAccountName + " already member of" + group.Name + Environment.NewLine;
            }
            group.Members.Add(sourceContext, IdentityType.SamAccountName, sAccountName);
            group.Save();
            group.Dispose();

            sResult += sAccountName + " is now member of " + group.Name + Environment.NewLine;
        }
        catch (Exception error)
        {
            return  error.Message + "-" + error.Source + Environment.NewLine;
        }
    }
    return sResult;

有人能告诉我这里出了什么问题吗。我几乎找不到与我收到的错误相关的任何引用。

您能否尝试稍微重构代码,以同时使用
GroupPrincipal
UserPrincipal
,如下所示:

try {
   GroupPrincipal group = GroupPrincipal.Find....
   UserPrincipal user = UserPrincipal.Find....

   group.Members.Add( user );
}

这是否也会引发异常?

哪一行引发异常?group.members.add(..)引发异常。我将示例中的代码重构为我提供的代码。该应用程序是Windows 2008 R2服务器上的网站。错误消息中的GUID属于ActiveDS.dll