2015-06-30 49 views
1

我想使用ProcessBatchData,但它只是沒有響應。 我創建了下面的代碼ProcessBatchData沒有響應,uls錯誤

  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。您指定的文件名無法使用,它可能是現有文件或目錄的名稱。

看來Errorcode是隨機生成的。

谷歌搜索這似乎是理論上這是一個訪問拒絕錯誤消息,但我作爲超級用戶在我的開發機器運行。

回答

1

由於Delete Method預計爲文檔庫

<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 owsfileref參數,如下面所示:

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