首页 文章

使用CSOM在Provider Hosted SharePoint App中获取列表项

提问于
浏览
0

我有一些简单的代码,使用CSOM读取SharePoint Online中托管的SharePoint列表中的项目 .

List list = ClientContext.Web.Lists.GetById(id);

        ClientContext.Load(list,
            a => a.ItemCount,
            a => a.Title);


        ListItemCollection items = list.GetItems( CamlQuery.CreateAllItemsQuery());

        ClientContext.Load(items);
        ClientContext.ExecuteQuery();

        foreach (ListItem li in items)
        {
        .... // Do some Stuff ...
        }

在ExecuteQuery调用结束时,我可以访问列表 Headers ("MyList")和记录计数(总共7项),但 ListItemsCollection items 的计数总是为零 .

没有错误被抛出 .

实际获取列表项需要做什么?我是否错过了对CSOM的另一个调用,或者他们是否是一个权限问题(如果出现这种情况,SharePoint Online是否会告诉我?)

帮助感激地收到了!

2 回答

  • -1

    尝试使用'include'来获取客户端上下文中的数据 .

    ClientContext.Load(list,a.Include(p => p.ItemCount,p => p.Title); ClientContext.ExecuteQuery();然后检查项目计数和 Headers 是否存在 .

    请告诉我们这个列表是否在应用程序中 . 如果它在主机Web上,则必须在appmanifest.xml-> permission选项卡下提供读取权限

  • 0

    使用Sharepoint 2013 On-Premises和STS作为truster broker时我遇到了同样的问题 .

    相同的行为,没有错误,我使用CamlQuery.CreateAllItemsQuery()得到零项/文件来获得“SELECT ALL”CamlQuery

    我解决了这个问题,通过页面创建了一个新的app主体:

    /layouts/15/appregnew.aspx
    

    然后使用该页面分配足够的权限:

    /layouts/15/appinv.aspx
    

    到包含列表的HostWeb(不是AppWeb) . 就我而言:

    <AppPermissionRequests AllowAppOnlyPolicy="true">
        <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Manage"/>
      </AppPermissionRequests>
    

    还有一个bug(Sharepoint bug),因为在这种情况下,它不会抛出“拒绝访问”错误

相关问题