実際、 SharePoint OnlineMicrosoft.SharePoint.Client.UnknownError
で 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();
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);