0

我有一个在提供程序托管的应用程序(用 C# 编写并使用 CSOM 编写)中运行并访问我的 SharePointOnline 租户上的列表的函数。

只要我从创建列表的站点集中访问提供程序托管的应用程序,该功能就可以完全按预期工作。

public bool CanUserReadList(ClientContext context, string listId)
    {
        try
        {                
            if (string.IsNullOrWhiteSpace(listId)) return false;

            List list = context.Web.Lists.GetById(new Guid(listId));                                                             
            context.Load(list, a => a.EffectiveBasePermissions,a=> a.DefaultViewUrl);
            context.ExecuteQuery();
            return list.EffectiveBasePermissions.Has(PermissionKind.OpenItems);
        }
        catch (Exception e)
        {
            //Error thrown if accessing from different site collection to 
        }
    }

但是,如果我从不同的站点集合访问提供程序托管的应用程序,我将无法访问列表(我得到一个未找到文件)异常。

如何使用 CSOM Microsoft.SharePoint.Client 库从另一个网站集中访问包含在一个网站集中的列表?

如何对 CSOM/提供商托管应用程序中的列表进行“跨站点收集”读取?

“本地”我会使用列表的 URL 打开 SPSite ...但是到目前为止我在 CSOM/SharePointOnline 中尝试的一切都失败了。

4

1 回答 1

0

尝试创建您尝试访问的站点集合的上下文。

ClientContext context = new ClientContext(“[Site URL]”);
Web web = context.Web;
context.Load(web);
context.ExecuteQuery();
于 2020-04-14T10:32:17.377 回答