2016-11-16 65 views
2

我使用OfficeDev.Core在SharePoint中创建DocumentSet“文件夹”创建DocumentSet在线。SharePoint Online中不能在C#托管外接一个运营商与CSOM Microsoft.SharePoint.Client.DocumentManagement.dll

我现在用的是最新的CSOM C#库的SharePoint在线: Microsoft.SharePoint.Client.dll V16.1.5813.1200 Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200

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

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

您是否有任何想法或解决方法使用CSOM创建文档集?

感谢

PS:我尝试创建这个documentset与UI,它工作正常。

回答

1

事实上,至少我目前遇到了同样的问题(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 20102013Online得到验证版本

使用

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

我发现这个帖子上的解决方案:

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

我经历了我的房客同样的问题在星期一早上14/11/2016

创建的文档集突然停止工作

现有的代码:

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); 

我现在在图书馆,我想创建documentset采取的内容类型。

检索到的ContentTypeId是longuer,此ID有效。

您可以注意到我使用GetContentTypeByName方法,它的工作方式和GetContentTypeByID一样。