3

根据此条目:克隆共享点角色组我正在尝试创建一个控制台应用程序来复制 SharePoint 组,包括其权限。

根据 Tjassens 的回答,我得出以下结论:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;  

namespace REGroupCopy
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite spSite = new SPSite("http://dev"))
            {
                using (SPWeb spWeb = spSite.RootWeb)
                {
                    // first we find the group that we want to clone
                    SPGroup group = spWeb.Groups["Test Group"];

                    // then we use this retreived group to get the roleassignments on the SPWeb object
                    SPRoleAssignment ass = spWeb.RoleAssignments.GetAssignmentByPrincipal(group);

                    string groupName = "Test Group 2"; // group to create
                    string groupDescription = "Group created by REGroupCopy";
                    string user = "michael";

                    spWeb.SiteGroups.Add(groupName, user, user, groupDescription);
                    SPGroup newGroup = spWeb.SiteGroups[groupName];
                    SPRoleAssignment roleAssignment = new SPRoleAssignment(newGroup);

                    //add role to web
                    spWeb.RoleAssignments.Add(roleAssignment);
                    spWeb.Update();
                }
            }         
        }
    }
}

不幸的是,我认为我没有正确理解所有内容。具体来说,我认为这些行是不正确的,但我不确定它们应该是什么:

                string groupName = "Test Group 2"; // group to create
                string groupDescription = "Group created by REGroupCopy";
                string user = "michael";

                spWeb.SiteGroups.Add(groupName, user, user, groupDescription);

我不一定需要有人来帮我解决这个问题(毕竟,这是一个学习练习)。相反,您能否帮助我了解我的思维过程在哪里失败以及我需要学习什么来纠正这个问题?

4

2 回答 2

1

添加方法:First Param:新组名

第二个参数:所有者(SPUser 对象)

第三个参数:组的默认用户(SPMember 对象)。

第四个参数:新组描述

来自站点管理员新组

第一个参数就像Name TextBox

第二个参数和第三个参数就像组所有者人员选择器

第四个参数就像关于我RichTextBox

于 2012-07-19T08:06:35.077 回答
1

您已发现代码的正确问题。当您调用以下方法时:

spWeb.SiteGroups.Add(groupName, user, user, groupDescription); 

你忘记了用户不应该是一个字符串,而是一个实际的SPUser对象。如果您获得该SPUser对象,您应该能够将新组添加到 SPWeb/SPSite。

您可以使用例如获取用户对象:

SPUser spUser = spWeb.EnsureUser(loginName);
于 2012-07-24T09:27:15.477 回答