【发布时间】:2016-09-09 14:18:18
【问题描述】:
我正在尝试使用 c# 中的 .NET CSOM 在线获取 Sharepoint 上文件的父列表。当我从独立的 c# 应用程序测试下面的代码时,它可以正常工作。
但是当我通过 c++ 中的 com 互操作调用完全相同的方法时,使用相同的参数,我得到一个异常,“指定的对象不属于列表”。 ExecuteQuery() 之后抛出异常
但我知道,如果我使用完全相同的 URL“/sites/develop_apps/Shared Documents/subway/heynow(000640-9-9-2016 9-53-31 AM).PDF”调用该方法一个独立的 c# 应用程序,我也不例外。而且“GetFileByServerRelativeUrl”似乎工作正常。无论如何它不会抛出异常。
我读过关于类似错误的文章,它们似乎可能与 url 有关。但我不明白为什么相同的参数在一种情况下有效,而在另一种情况下无效。
Microsoft.SharePoint.Client.File thisFile =m_clientContext.Web.GetFileByServerRelativeUrl(fileRelativeUrl);
ListItem item = thisFile.ListItemAllFields;
m_clientContext.Load(item.ParentList);
m_clientContext.ExecuteQuery();
Fiddler 的错误痕迹显示。
{ "SchemaVersion":"15.0.0.0","LibraryVersion":"16.0.5701.1202","ErrorInfo":{ "ErrorMessage":"指定的对象不属于列表。","ErrorValue":null,"TraceCorrelationId":"c616a29d-90ab-3000-b1de-17538058f3e4","ErrorCode":-2146232832,"ErrorTypeName": “Microsoft.SharePoint.SPException” },"TraceCorrelationId":"c616a29d-90ab-3000-b1de-17538058f3e4"
【问题讨论】:
-
啊,这很能说明问题。我的测试应用程序中客户端上下文的 URL 属性显示
://mysite.sharepoint.com/sites/develop_apps/ 。我的生产测试未通过 -
看来是这样。不知何故,我的生产应用程序在创建客户端上下文对象时没有设置正确的 url。