Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
item.Recycle返回空GUID(SharePoint Online,C#)_C#_Sharepoint_Sharepoint Online - Fatal编程技术网

item.Recycle返回空GUID(SharePoint Online,C#)

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

所以,长话短说,我想删除(回收)一个项目,保存它的ID,然后使用该ID从垃圾桶中恢复它

我可以按名称从垃圾桶中回收物品,如下所示:

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.run
ExecuteQuery
,然后读取该值。这已经解决了问题吗?这是一种奇怪的行为,msdn本身就说明了它应该返回“回收站中的新项目”的有效GUID。你试过调试这个吗?调用该方法后,sharepoint是否将该文件放在回收站中?
.Value
,是因为guid是可为
空的
,还是因为
newGuid
实际上是类型
ClientResult
?@Tatranskymedved是的,尽管guid为空,但它确实正确地回收了该项。我更新了原来的帖子,包括这一点@dlatikay我更新了第一篇文章,使其更加清晰。是的,基本上
Recycle()。应首先给出Guid.run
ExecuteQuery
,然后读取该值。这是否已经解决了问题?