C# CSOM集合“;将默认组设为“组”;

C# CSOM集合“;将默认组设为“组”;,c#,sharepoint,csom,sharepoint-online,C#,Sharepoint,Csom,Sharepoint Online,在CSOM(C#)中,我正在创建一个子网站,并为所有者、成员和访问者创建SharePoint组 访客应为共享时的默认组。在界面中,您可以通过在“组设置”下选择“创建默认组”,将访客组设置为默认 但在CSOM中如何做到这一点 这是我当前创建组的代码 private void SetSecurity(Web web) { CreateGroup($"Besøgende på {web.Title}", $"Denne gruppe giver læserettighe

在CSOM(C#)中,我正在创建一个子网站,并为所有者、成员和访问者创建SharePoint组

访客应为共享时的默认组。在界面中,您可以通过在“组设置”下选择“创建默认组”,将访客组设置为默认

但在CSOM中如何做到这一点

这是我当前创建组的代码

    private void SetSecurity(Web web)
    {
        CreateGroup($"Besøgende på {web.Title}", $"Denne gruppe giver læserettighed til {web.Title} sitet", AssociatedGroup.Vistors, web);
        CreateGroup($"Medlemmer af {web.Title}", $"Denne gruppe giver skriverettighed til {web.Title} sitet", AssociatedGroup.Members, web);
        CreateGroup($"Ejere af {web.Title}", $"Denne gruppe giver fuld kontrol til {web.Title} sitet", AssociatedGroup.Owners, web);

        SpClientContext.ExecuteQuery();
    }

    private enum AssociatedGroup
    {
        Owners,
        Members,
        Vistors
    }

    private void CreateGroup(string title, string description, AssociatedGroup associatedGroup, Web web)
    {
        var groupCreation = new GroupCreationInformation();
        groupCreation.Title = title;
        groupCreation.Description = title;

        var group = web.SiteGroups.Add(groupCreation);

        var collRoleDefinitionBinding = new RoleDefinitionBindingCollection(SpClientContext);

        switch (associatedGroup)
        {
            case AssociatedGroup.Owners:
                web.AssociatedOwnerGroup = group;
                web.AssociatedOwnerGroup.Update();
                var adminRoleDefinition = web.RoleDefinitions.GetByType(RoleType.Administrator);
                collRoleDefinitionBinding.Add(adminRoleDefinition);
                break;

            case AssociatedGroup.Members:
                web.AssociatedMemberGroup = group;
                web.AssociatedMemberGroup.Update();
                var contributerDefinition = web.RoleDefinitions.GetByType(RoleType.Contributor);
                collRoleDefinitionBinding.Add(contributerDefinition);
                break;

            case AssociatedGroup.Vistors:
                web.AssociatedVisitorGroup = group;
                web.AssociatedVisitorGroup.Update();
                var vistorDefinition = web.RoleDefinitions.GetByType(RoleType.Reader);
                collRoleDefinitionBinding.Add(vistorDefinition);
                break;
        }

        web.RoleAssignments.Add(group, collRoleDefinitionBinding);

        group.Update();

        web.Update();
    }
我曾尝试将访问者组设置为AssociatedMemberGroup,但没有给出正确的结果,因为在UI中共享时,它将映射到“可以编辑”选项

                case AssociatedGroup.Vistors:
                //web.AssociatedVisitorGroup = group;
                web.AssociatedMemberGroup = group;
                web.AssociatedMemberGroup.Update();
                var vistorDefinition = web.RoleDefinitions.GetByType(RoleType.Reader);
                collRoleDefinitionBinding.Add(vistorDefinition);
                break;


那么,关于如何在CSOM中在共享时将访问者组标记为默认组,有什么建议吗?

下面的示例演示了如何使用CSOM API设置默认组:

public static void SetDefaultGroup(Group group)
{
     var ctx = group.Context as ClientContext;
     ctx.Web.AssociatedMemberGroup = group;
     ctx.Web.Update();
     ctx.ExecuteQuery();
}
用法


以下示例演示如何使用CSOM API设置默认组:

public static void SetDefaultGroup(Group group)
{
     var ctx = group.Context as ClientContext;
     ctx.Web.AssociatedMemberGroup = group;
     ctx.Web.Update();
     ctx.ExecuteQuery();
}
用法


正如你在我的帖子中看到的,我已经试过了。检查图像:问题是AssociatedMemberGroup似乎链接到UI中的“可以编辑”。我希望访问者组成为我的默认组。谢谢@Vadim!正如你在我的帖子中看到的,我已经试过了。检查图像:问题是AssociatedMemberGroup似乎链接到UI中的“可以编辑”。我希望访问者组成为我的默认组。谢谢@Vadim!