SharingCapability SharePoint Online 网站集 c#

SharingCapability SharePoint Online Site Collection c#

我想在设置我的网站集后设置 SharingCapability 属性。我使用了 PnP 的文档,你可以在这里找到 (External Sharing APIs for SharePoint and OneDrive for Business (Core.ExternalSharing))

当我将 属性 设置为 'ExternalUserAndGuestSharing' 时,没有任何反应。网站集仍无法与外部共享。

这是我的代码:

        public static void SetSharingCapability(string fullWebUrl, ClientContext context)
    {
        Tenant tenant = new Tenant(context);
        SiteProperties siteProp = tenant.GetSitePropertiesByUrl(fullWebUrl, true);
        context.Load(siteProp);
        context.ExecuteQuery();

        siteProp.SharingCapability = SharingCapabilities.ExternalUserAndGuestSharing;
        siteProp.Update();
        context.ExecuteQuery();
    }

您对解决 'problem' 有什么建议吗?

最有可能在应用设置 (SharingCapability) 后,操作本身尚未完成,并且尚未反映更新设置的原因:

siteProp.SharingCapability = SharingCapabilities.ExternalUserAndGuestSharing;
siteProp.Update();
context.ExecuteQuery();  //<- even though the query is submitted to the server there is no guarantee at this moment the update operation is completed

为了确保更新操作完成,您可以考虑以下解决方案:

public static void SetSharingCapability(string fullWebUrl, ClientContext context)
{
        Tenant tenant = new Tenant(context);
        SiteProperties siteProp = tenant.GetSitePropertiesByUrl(fullWebUrl, true);

        siteProp.SharingCapability = SharingCapabilities.Disabled;
        siteProp.Update();
        context.ExecuteQuery();

        siteProp = tenant.GetSitePropertiesByUrl(fullWebUrl, true);
        context.Load(siteProp, p => p.Status);
        context.ExecuteQuery();
        while (siteProp.Status == "Updating")
        {
            Thread.Sleep(TimeSpan.FromSeconds(1));
            siteProp = tenant.GetSitePropertiesByUrl(fullWebUrl, true);
            context.Load(siteProp);
            context.ExecuteQuery();
        }
 }