В самом деле, по крайней мере, я испытываю в данный момент тот же вопрос (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);