转载

解决在使用client object model的时候报“object does not belong to a list”错误

在查看别人代码的时候,发现了个有意思的问题,使用client object model将一个文件check in

我使用的是如下语句获取file

Microsoft.SharePoint.Client.File fileUploaded = context.Web.GetFileByServerRelativeUrl(docPathUrl);

context.Load(fileUploaded);context.ExecuteQuery();

if (fileUploaded.CheckOutType != CheckOutType.None)

{

fileUploaded.CheckIn("test", CheckinType.MajorCheckIn);

context.ExecuteQuery();

}

在代码执行到红色部分时候就报错“object does not belong to a list”。

第一反应是没找到文件所在的List,于是查看docPathUrl,发现是正确的url. 没有问题。继而在跟站点下面执行这段代码,发现运行正常,没有报错,经过一番波折后发现context在初始化的时候ClientContext context = new ClientContext(url)用的时候根站点的URL,而我的文档库在其中一个sub site上面,因为我的docPathUrl使用的是serverrelativeUrl,所以在获取fileUploaded的时候是能获取到的,但是在check in的时候就会报错。

于是将ClientContext context = new ClientContext(url)中的url变为该文档库所在的sub site的url后,语句运行就没有问题了。

结论:clientcontext初始化的时候URL要注意啊,尤其后面直接使用了context.web属性的时候。

正文到此结束
Loading...