C# 在SharePoint online isn'上使用CSOM检索列表项;行不通

C# 在SharePoint online isn'上使用CSOM检索列表项;行不通,c#,sharepoint,C#,Sharepoint,我正在SharePoint online上使用提供商托管的模型开发应用程序模型 我想从clientwebpart访问Sharepoint列表项。我可以访问列表对象,但无法获取列表项(始终为空)。我已经遵循了“Apps for SharePoint示例包-SharePoint 2013通过在应用程序中使用CSOM执行基本数据访问操作”中的示例代码,但仍然不起作用 这是我的密码: SharePointContextToken contextToken; Uri sharepointUrl; stri

我正在SharePoint online上使用提供商托管的模型开发应用程序模型

我想从clientwebpart访问Sharepoint列表项。我可以访问列表对象,但无法获取列表项(始终为空)。我已经遵循了“Apps for SharePoint示例包-SharePoint 2013通过在应用程序中使用CSOM执行基本数据访问操作”中的示例代码,但仍然不起作用

这是我的密码:

SharePointContextToken contextToken;
Uri sharepointUrl;
string accessToken;

TokenHelper.TrustAllCertificates();
string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);

if (contextTokenString != null)
{
    contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority);

    sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]);
    accessToken = TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority).AccessToken;

    using (ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken))
    {
        Web web = clientContext.Web;
        ListCollection lists = web.Lists;

        List selectedList = lists.GetByTitle("LeaveCategory");

        clientContext.Load<ListCollection>(lists); // this lists object is loaded successfully
        clientContext.Load<List>(selectedList);  // this list object is loaded successfully

        clientContext.ExecuteQuery();

        CamlQuery camlQuery = new CamlQuery();
        camlQuery.ViewXml = @"<View><Query><Where><IsNotNull><FieldRef Name='ID' /></IsNotNull></Where></Query><ViewFields><FieldRef Name='ID' /></ViewFields></View>";

        Microsoft.SharePoint.Client.ListItemCollection listItems = selectedList.GetItems(camlQuery);

        clientContext.Load<Microsoft.SharePoint.Client.ListItemCollection>(listItems); // problem here, this list items is return empty 

        clientContext.ExecuteQuery();
    }
}
SharePointContextToken contextToken;
Uri共享点URL;
字符串访问令牌;
TokenHelper.TrustAllCertificates();
string contextTokenString=TokenHelper.GetContextTokenFromRequest(请求);
if(contextTokenString!=null)
{
contextToken=TokenHelper.ReadAndValidateContextToken(contextTokenString,Request.Url.Authority);
sharepointUrl=新Uri(Request.QueryString[“SPHostUrl”]);
accessToken=TokenHelper.GetAccessToken(contextToken,sharepointUrl.Authority).accessToken;
使用(ClientContext ClientContext=TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(),accessToken))
{
Web=clientContext.Web;
ListCollection列表=web.lists;
List selectedList=lists.GetByTitle(“LeaveCategory”);
加载(列表);//此列表对象已成功加载
clientContext.Load(selectedList);//此列表对象已成功加载
clientContext.ExecuteQuery();
CamlQuery CamlQuery=新的CamlQuery();
camlQuery.ViewXml=@;
Microsoft.SharePoint.Client.ListItemCollection listItems=selectedList.GetItems(camlQuery);
Load(listItems);//这里的问题是,此列表项返回空
clientContext.ExecuteQuery();
}
}
我犯了什么小错误吗

另外,我正在尝试创建一个新项目,并按照的指示进行操作,并将代码附加到检索列表项,但它仍然返回0项

有没有人成功地做到了这一点?

现在开始工作了

这是因为我们必须在AppManifest.xml文件中为应用程序添加特定权限


我在范围中添加了“列表”,并授予其权限“完全控制”

在仅执行以下操作以及列表范围完全权限后,它对我有效:

在范围单元中,从下拉列表中选择Web

在“权限”单元格中,从下拉列表中选择“读取”