我正在尝试使用ProcessBatchData,但它只是没有响应。 我使用以下代码创建了一个示例控制台应用程序
using (SPSite site = new SPSite("siteurl"))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
StringBuilder sb = new StringBuilder();
SPFolder folder = web.GetFolder("folderurl");
SPDocumentLibrary docLib = folder.DocumentLibrary;
List<SPListItem> files = docLib.GetItems(new SPQuery() { Folder = folder, ViewAttributes = "Scope=\"Recursive\"" }).Cast<SPListItem>().ToList();
SPListItem f = files[0];
sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><ows:Batch OnError=\"Return\">");
sb.Append("<Method ID=\"1\">");
sb.Append("<SetList Scope=\"Request\">" + docLib.ID + "</SetList>");
sb.Append("<SetVar Name=\"ID\">" + f.ID + "</SetVar>");
sb.Append("<SetVar Name=\"urn:schemas-microsoft-com:office:office#Title\">It is Updated</SetVar>");
sb.Append("<SetVar Name=\"Cmd\">Delete</SetVar>");
sb.Append("</Method>");
sb.Append("</ows:Batch>");
web.ProcessBatchData(sb.ToString());
web.Update();
}
}
没有任何反应,甚至没有错误。在ULS中我发现了这个错误:
“Batchmgr方法错误。错误代码:0x7714c730。您指定的文件名无法使用。它可能是现有文件或目录的名称。”
似乎错误代码是随机生成的。
谷歌搜索有点似乎这在理论上是一个访问被拒绝的错误消息,但我在我的开发机器中作为超级用户运行。答案 0 :(得分:1)
由于Delete Method需要文档库的<{1}}参数
owsfileref
尝试指定文件网址,如下所示:
<Method ID="Text">
<SetList Scope="Request">GUID</SetList>
<SetVar Name="Cmd">Delete</SetVar>
<SetVar Name="ID">Integer</SetVar>
<SetVar Name="NextUsing">URL</SetVar>
<SetVar Name="owsfileref">URL</SetVar>
</Method>