实际上,至少我目前在Microsoft.SharePoint.Client.UnknownError
尝试通过SharePoint Online中的 CSOM API 创建文档集时遇到了同样的问题(异常) 。
如何重现?
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();
}
已针对 SharePoint2010
和版本2013
进行了验证Online
用法
var list = ctx.Web.Lists.GetByTitle("Documents");
CreateDocumentSet(list,docSetName);