Sharepoint Online Не удается создать DocumentSet с CSOM. Microsoft.SharePoint.Client.DocumentManagement.dll

Я использую OfficeDev.Core для создания "Папки" DocumentSet в sharepoint Online в размещаемой надстройке поставщика в C#.

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

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

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

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

Спасибо

PS: я пытаюсь создать этот набор документов с пользовательским интерфейсом, и он отлично работает.

2 ответа

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

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

При создании набора документов через Microsoft.SharePointOnline.CSOM библиотека:

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);

Я нахожу решение в этом посте:

https://sharepoint.stackexchange.com/questions/199336/creating-document-sets-with-sharepoint-csom-api/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);

Теперь я беру тип контента из библиотеки, где я хочу создать набор документов.

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

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

Другие вопросы по тегам