使用Host-Provider方式开发的App,无法获取SharePoint Online中的item

来源:互联网 发布:win10 ssd优化设置 编辑:程序博客网 时间:2024/06/07 02:26
微软官方使用CAML读取Host Web上的list中的item的示例代码请参见:点击打开链接

我使用的代码为:

List selectedList = lists.GetByTitle("TestList");clientContext.Load<List>(selectedList); clientContext.ExecuteQuery();CamlQuery camlQuery = new CamlQuery();camlQuery.ViewXml = @"<View><Query><Where><In><FieldRef Name='ID' /></In><Values><Value Type="Counter">1</Value></Values></Where></Query></View>";Microsoft.SharePoint.Client.ListItemCollection listItems = selectedList.GetItems(camlQuery);clientContext.Load<Microsoft.SharePoint.Client.ListItemCollection>(listItems); clientContext.ExecuteQuery();
//执行以上代码之后,变量listItems一直是空的。

这段代码是参照示例代码编写,运行良好,但是突然读取不到host web中list的item了,读取的结果一直是空的。

查了半天代码,确定代码没有问题,最后才发现是App的权限不够,我之前赋予App的权限是Host web里List的Write权限。正确的权限设置是在AppManifest.xml中,Permissions标签页下将App在List上赋予Full Control的权限。如果不是Full Control,无法读取list中的item。这个变化应该是来自于SharePoint Online的权限更改,将读取host web中的item需要的权限提高导致的。

SharePoint Online以及整个Office 365一直处于不断的升级中,像这样的变化对app的影响还是很大的。从这里可以得到的一个经验是,为App赋予尽可能高的权限。
阅读全文
0 0