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);
Я нахожу решение в этом посте:
Я столкнулся с той же проблемой на моем арендаторе в понедельник утром 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.