ProcessBatchData 没有响应,uls 错误

ProcessBatchData not responding, uls error

我正在尝试使用 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 Method error. Errorcode: 0x7714c730. The file name you specified could not be used. It may be the name of an existing file or directory."

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

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

因为 Delete Method 需要 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>

尝试指定文件 url,如下所示:

string fileRef = f[SPBuiltInFieldId.FileRef].ToString();
sb.Append("<SetVar Name=\"owsfileref\">" +  fileRef +  "</SetVar>");