item.Recycle返回空GUID(SharePoint Online,C#)
所以,长话短说,我想删除(回收)一个项目,保存它的ID,然后使用该ID从垃圾桶中恢复它 我可以按名称从垃圾桶中回收物品,如下所示:item.Recycle返回空GUID(SharePoint Online,C#),c#,sharepoint,sharepoint-online,C#,Sharepoint,Sharepoint Online,所以,长话短说,我想删除(回收)一个项目,保存它的ID,然后使用该ID从垃圾桶中恢复它 我可以按名称从垃圾桶中回收物品,如下所示: if (rItem.leafname == "torecycle.docx") { rItem.restore(); client.executequery(); } } 但这需要用户事先知道项目的名称 当项目被回收并移动到垃圾箱时,其Id会发生变化。item.Recycle()方法应该返回一个ClientResul
if (rItem.leafname == "torecycle.docx")
{
rItem.restore();
client.executequery();
}
}
但这需要用户事先知道项目的名称
当项目被回收并移动到垃圾箱时,其Id会发生变化。item.Recycle()
方法应该返回一个ClientResult
,其新Id为RecycleBinItem
,但返回的Guid
为空(全为零)
我像这样回收物品:
if (item.DisplayName == "torecycle")
{
client.Load(item);
var recycledItem = item.Recycle();
var newGuid = recycledItem.Value;
Console.WriteLine("new guid " + newGuid);
Client.ExecuteQuery();
}
打印输出是新guid 00000000-0000-0000-0000-000000000000
,但它确实将回收站项目正确地移动到垃圾箱
我是不是遗漏了什么?如何获取RecycleBinItem
的实际Guid
任何帮助都将不胜感激 Recycle函数的返回值是一个
ClientResult
,它只是底层SOAP请求/响应模型的包装。请求在本地收集,并在调用ExecuteQuery
时发送。因此,结果值将仅在该调用完成后填充
要理解SharePoint server和客户端对象模型之间的这种差异,有必要查看,因为在的文档中从未提及。回收函数的返回值是一个
ClientResult
,它只是底层SOAP请求/响应模型的包装。请求在本地收集,并在调用ExecuteQuery
时发送。因此,结果值将仅在该调用完成后填充
要理解SharePoint服务器和客户端对象模型之间的这种差异,有必要查看,因为在的文档中从未提到过它。这是一种奇怪的行为,msdn本身就说明了它应该返回“回收站中的新项目”的有效GUID。你试过调试这个吗?调用该方法后,sharepoint是否将该文件放在回收站中?
.Value
,是因为guid是可为空的
,还是因为newGuid
实际上是类型ClientResult
?@Tatranskymedved是的,尽管guid为空,但它确实正确地回收了该项。我更新了原来的帖子,包括这一点@dlatikay我更新了第一篇文章,使其更加清晰。是的,基本上Recycle()。应首先给出Guid.runExecuteQuery
,然后读取该值。这已经解决了问题吗?这是一种奇怪的行为,msdn本身就说明了它应该返回“回收站中的新项目”的有效GUID。你试过调试这个吗?调用该方法后,sharepoint是否将该文件放在回收站中?.Value
,是因为guid是可为空的
,还是因为newGuid
实际上是类型ClientResult
?@Tatranskymedved是的,尽管guid为空,但它确实正确地回收了该项。我更新了原来的帖子,包括这一点@dlatikay我更新了第一篇文章,使其更加清晰。是的,基本上Recycle()。应首先给出Guid.runExecuteQuery
,然后读取该值。这是否已经解决了问题?