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