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

时间:2017-02-20 08:06:17

标签: c# sharepoint sharepoint-online

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

我可以通过名称从垃圾桶中恢复一个项目,如下所示:

if (rItem.leafname == "torecycle.docx")
    {
        rItem.restore();
        client.executequery();
    }
}

但这需要用户事先知道项目的名称。

当项目被回收并移至垃圾箱时,其ID会发生变化。 item.Recycle()方法应该返回ClientResult<Guid> RecycleBinItem的新ID,但返回的Guid为空(全为零)。

我像这样回收物品:

if (item.DisplayName == "torecycle")
{
    client.Load(item);

    var recycledItem = item.Recycle(); 
    var newGuid = recycledItem.Value;

    Console.WriteLine("new guid " + newGuid);

    Client.ExecuteQuery();
}              

打印输出为new guid 00000000-0000-0000-0000-000000000000,但它确实将回收站项目正确移动到垃圾箱。

我在这里遗漏了什么吗?如何获得RecycleBinItem的实际Guid?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

Recycle函数的返回值是ClientResult<T>,它只是底层SOAP请求/响应模型的包装器。请求在本地收集,并在调用ExecuteQuery时发送。因此,只有在该调用结束后才会填充结果值。

要了解SharePoint服务器和客户端对象模型之间的这种差异,有必要查看overall concept,因为在ClientResult的文档中,它从未被提及过。