2015-06-30 2 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. Код ошибки: 0x7714c730. Невозможно использовать имя файла, которое вы указали, это имя существующего файла или каталога».

кажется, что код ошибки генерируется случайным образом.

googling о том, что немного кажется, что это теоретически сообщение об ошибке доступа, но я работаю как суперпользователь в моей машине dev.

ответ

1

С 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>"); 
Смежные вопросы