2016-11-16 4 views
2

Я использую OfficeDev.Core для создания «Папки» DocumentSet в sharepoint Online в Провайдере размещенной надстройки на C#.Sharepoint Online Не удается создать DocumentSet с помощью CSOM Microsoft.SharePoint.Client.DocumentManagement.dll

Я использую Lastest CSOM C# библиотека для Sharepoint На линии: Microsoft.SharePoint.Client.dll V16.1.5813.1200 Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200

Этот работал отлично месяцами, а вчера мы замечаем, что метод Create из класса Microsoft.SharePoint.Client.DocumentSet.DocumentSet возвращает ошибку, неизвестную!

Я использую AppOnly Access Token с наивысшими разрешениями.

У вас есть идеи или обходные пути для создания набора документов с помощью CSOM?

Благодаря

PS: Я пытаюсь создать этот documentset с UI и он работает отлично.

ответ

1

В самом деле, по крайней мере, я испытываю в данный момент тот же вопрос (Microsoft.SharePoint.Client.UnknownError исключения) при попытке создать набор документов через CSOM API в SharePoint Online.

Как воспроизвести?

При создании документа с помощью набора Microsoft.SharePointOnline.CSOM library:

var list = ctx.Web.Lists.GetByTitle("Documents"); 

var docSetContentType = ctx.Site.RootWeb.ContentTypes.GetById("0x0120D520"); 
ctx.Load(docSetContentType); 

ctx.Load(list.RootFolder); 
ctx.ExecuteQuery(); 
var result = DocumentSet.Create(ctx, list.RootFolder, docSetName, docSetContentType.Id); 
ctx.ExecuteQuery(); 

исключение из Microsoft.SharePoint.Client.UnknownError происходит в SharePoint Online.

Примечание: ошибка была обнаружена в последних и предыдущих версиях из Microsoft.SharePointOnline.CSOM библиотеки. Это заставляет меня думать, что это не , связанное с библиотекой CSOM, а с самим сервисом SharePoint Online CSOM .

Обход

Но есть обходной путь, который позволяет создать набор документов (без Microsoft.SharePoint.Client.DocumentSet имен вовлеченных)

public static void CreateDocumentSet(List list, string docSetName) 
{ 
     var ctx = list.Context; 
     if (!list.IsObjectPropertyInstantiated("RootFolder")) 
     { 
      ctx.Load(list.RootFolder); 
      ctx.ExecuteQuery(); 
     } 

     var itemInfo = new ListItemCreationInformation(); 
     itemInfo.UnderlyingObjectType = FileSystemObjectType.Folder; 
     itemInfo.LeafName = docSetName; 
     itemInfo.FolderUrl = list.RootFolder.ServerRelativeUrl; 
     var item = list.AddItem(itemInfo); 
     item["ContentTypeId"] = "0x0120D520"; 
     item["HTML_x0020_File_x0020_Type"] = "SharePoint.DocumentSet"; 
     item.Update(); 
     ctx.ExecuteQuery(); 
} 

Был сверен SharePoint 2010, 2013 и Online версии

Использование

var list = ctx.Web.Lists.GetByTitle("Documents"); 
CreateDocumentSet(list,docSetName); 
1

я найти решение на этот пост:

https://sharepoint.stackexchange.com/questions/199336/creating-document-sets-with-sharepoint-csom-api/199718#199718

я испытал тот же вопрос о моем жильца в понедельник утром 14/11/2016

Создание документального набора внезапно прекратить работу

Существующий код:

var devisCT = globalHostWeb.GetContentTypeByName(SPConstants.CTName_Devis); 
dsQuoteFolder = rootFolder.CreateDocumentSet(folderName, devisCT.Id); 

и решение, которое работает для меня:

var devisCT = devisLib.GetContentTypeByName(SPConstants.CTName_Devis); 
dsQuoteFolder = rootFolder.CreateDocumentSet(folderName, devisCT.Id); 

теперь я беру тип содержимого из библиотеки, где я хочу, чтобы создать documentset.

Полученный ContentTypeId является longuer, и этот идентификатор работает.

Вы можете заметить, что я использую метод GetContentTypeByName, и он работает так же, как и GetContentTypeByID.

Смежные вопросы