ProcessBatchData没有响应,uls错误

时间:2015-06-30 20:37:55

标签: sharepoint sharepoint-2013

我正在尝试使用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。您指定的文件名无法使用。它可能是现有文件或目录的名称。”

似乎错误代码是随机生成的。

谷歌搜索有点似乎这在理论上是一个访问被拒绝的错误消息,但我在我的开发机器中作为超级用户运行。

1 个答案:

答案 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>