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.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
,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 # 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一样有效