用户没有被添加到SharePoint子网站组,而是被添加到网站集级别组

时间:2020-03-12 12:38:56

标签: c# sharepoint-online csom

我必须使用CSOM将用户添加到SharePoint Online SubSite的“成员”和“所有者”组中。 我为此使用Sub site的Context。下面的方法用于获取组名,我将所有者/成员作为组名传递,然后将其添加到下面的方法返回的组中,但它始终添加到网站集级别组:

private async Task<Group> GetGroupOrDefaultAsync(ClientContext context, Constants.SPDefaultGroup spDefaultGroup)
        {
            Group group = null;
            string groupName = string.Empty;
            switch (spDefaultGroup)
            {
                case Constants.SPDefaultGroup.Members:
                    groupName = Common.Configuration.Constants.MatterCustomMemberGroup;
                    if (string.IsNullOrWhiteSpace(groupName))
                    {
                        group = context.Web.AssociatedMemberGroup;

                    }
                    break;
                case Constants.SPDefaultGroup.Owners:
                    groupName = Common.Configuration.Constants.MatterCustomOwnerGroup;
                    if (string.IsNullOrWhiteSpace(groupName))
                    {
                        group = context.Web.AssociatedOwnerGroup;
                    }
                    break;
                case Constants.SPDefaultGroup.Visitors:
                    groupName = Common.Configuration.Constants.MatterCustomVisitorGroup;
                    if (string.IsNullOrWhiteSpace(groupName))
                    {
                        group = context.Web.AssociatedVisitorGroup;
                    }
                    break;
            }
            if (group == null)
            {
                if (!string.IsNullOrWhiteSpace(groupName))
                {
                    // get group by name configured in the web.config
                    group = await GetGroupByNameAsync(context, groupName);
                }
                else
                {
                    _logger.Error(new Exception($"Sharepoint Group not found. Searching group for {spDefaultGroup.ToString()}"), "SharePointService.AssignPeopleToGroup error.");
                }
            }
            return group;
        }

Code to add user:

var user = context.Web.EnsureUser(name);
                            group.Users.AddUser(user);
                            await context.ExecuteQueryRetryAsync();
    enter code here

1 个答案:

答案 0 :(得分:0)

默认情况下,sharePoint子网站使用与父网站相同的权限。因此,子网站使用与网站集级别组相同的组。将用户添加到子网站用户组等于将其添加到网站集级别组。

您可以在子站点中删除uqiue权限,然后为该子站点创建新的组。

enter image description here

enter image description here