【问题标题】:Using CSOM to fetch List Items in Provider Hosted SharePoint App使用 CSOM 在提供商托管的 SharePoint 应用程序中获取列表项
【发布时间】:2015-01-15 13:48:42
【问题描述】:

我有一些简单的代码,它使用 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 调用结束时,我可以访问列表标题(“MyList”)和记录计数(总共 7 个项目),但 ListItemsCollection 项目 总是计数为零。

不会抛出任何错误。

我需要做什么才能真正获取列表项?我是否错过了对 CSOM 的另一个电话,或者可能是权限问题(SharePoint Online 不会告诉我是否是这种情况?)

帮助感激不尽!

【问题讨论】:

    标签: sharepoint office365 csom sharepoint-online


    【解决方案1】:

    尝试使用“包含”来获取客户端上下文中的数据。

    ClientContext.Load(list, a.Include(p => p.ItemCount, p => p.Title); ClientContext.ExecuteQuery();然后检查是否有item count和title。

    请让我们知道此列表是否包含在应用程序中。 如果它在主机网络上,那么您必须在 appmanifest.xml->permission 选项卡下提供读取权限

    【讨论】:

    • 是的。项目数和标题总是在那里....这不是问题。问题是我无法获取 ListItems。
    • 上述代码仅针对 App 下的列表或库运行,而不是在主机 Web 上。对于 hostweb,您必须提供许可。请让我们知道此列表是否包含在应用程序中。如果它在主机网络上,那么您必须在 appmanifest.xml->permission tab 下提供读取权限
    • 列表在 HostWeb 上。如果我向清单添加权限,允许最终用户选择提供商托管应用程序可以读取的列表,那么提供商托管应用程序如何知道它有权访问哪个列表?
    • 理想情况下,当您授予 Web 级别为已读权限时,用户可以访问从列表中检索数据。此外,您必须在代码中指定您引用的列表或迭代 web.lists。
    【解决方案2】:

    我在使用 Sharepoint 2013 On-Premises 和 STS 作为信任代理时遇到了同样的问题。

    相同的行为,没有错误,我使用 CamlQuery.CreateAllItemsQuery() 获得零个项目/文档来获得“全选”CamlQuery

    我通过页面创建了一个新的应用程序主体解决了这个问题:

    /layouts/15/appregnew.aspx
    

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

     /layouts/15/appinv.aspx 
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2015-09-02
      • 2016-07-10
      相关资源
      最近更新 更多