Microsoft.SharePoint.Client.DocumentManagement.dll不能创建文档集

本文关键字:创建 文档 不能 dll SharePoint Client DocumentManagement Microsoft | 更新日期: 2023-09-27 18:18:05

我正在使用OfficeDev。在sharepoint Online中创建DocumentSet "Folder"的核心。

我正在使用最新的CSOM c#库Sharepoint On line:Microsoft.SharePoint.Client.dll V16.1.5813.1200Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200

这是正常工作了几个月,昨天我们注意到,方法创建从类Microsoft.SharePoint.Client.DocumentSet.DocumentSet返回一个错误未知!

我使用最高权限的AppOnly访问令牌。

用CSOM创建文档集,你有什么想法或解决方法吗?

感谢PS:我试着用UI创建这个文档集,它工作得很好。

Microsoft.SharePoint.Client.DocumentManagement.dll不能创建文档集

事实上,至少我现在遇到了同样的问题(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();

SharePoint Online出现Microsoft.SharePoint.Client.UnknownError异常。

注意:该错误已在最新和以前的版本中检测到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, 2013Online版本

使用

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

我在这个帖子上找到了一个解决方案:

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

我在2016年11月14日星期一早上遇到了同样的问题

创建文档集突然停止工作

现有代码:

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较长,并且此ID有效。

你可以注意到我使用了GetContentTypeByName方法它和GetContentTypeByID一样有效