2016-11-16 9 views
2

OfficeDev.Core를 사용하여 C#의 Provider Hosted Add-in에서 Sharepoint Online의 DocumentSet "폴더"를 만듭니다. Microsoft.SharePoint.Client.dll V16.1.5813.1200 Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200Sharepoint Online CSOM을 사용하여 DocumentSet을 만들 수 없습니다. Microsoft.SharePoint.Client.DocumentManagement.dll

이를 : 나는 라인에 SharePoint의 최신 CSOM의 C#을 라이브러리를 사용하고

어제 Microsoft는 클래스 Microsoft.SharePoint.Client.DocumentSet.DocumentSet에서 Create 메서드가 알 수없는 오류를 반환하는 것을 확인했습니다.

가장 높은 권한을 가진 AppOnly 액세스 토큰을 사용합니다.

CSOM을 사용하여 문서 세트를 만들 수있는 아이디어 나 해결책이 있습니까?

감사

PS : 나는 UI이 documentset을 만들려고하고 잘 작동합니다. 셰어 포인트 온라인에 CSOM API를 통해 설정 문서를 작성하는 동안 실제로

답변

1

은, 적어도 내가 순간에 같은 문제 (Microsoft.SharePoint.Client.UnknownError 예외)를 경험하고있다.

재현 방법?

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의 예외가 셰어 포인트 온라인에 발생합니다.

참고 : Microsoft.SharePointOnline.CSOM 라이브러리의 최신 및 이전 버전에서 오류가 감지되었습니다. 따라서 CSOM 라이브러리와 관련된 이 아니라 SharePoint Online CSOM 서비스 자체와 관련된 것으로 생각됩니다.

해결

그러나

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, 2013Online에 대해 확인 된 (Microsoft.SharePoint.Client.DocumentSet 포함 된 네임 스페이스없이) 문서 세트를 만들 수있는 해결 방법은 버전

,

사용

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

갑자기 작동하지 않는다.

기존 코드 : 012 3,516,

var devisCT = globalHostWeb.GetContentTypeByName(SPConstants.CTName_Devis); 
dsQuoteFolder = rootFolder.CreateDocumentSet(folderName, devisCT.Id); 

과 나를 위해 작동 솔루션입니다 : 나는 documentset를 생성 할 위치

var devisCT = devisLib.GetContentTypeByName(SPConstants.CTName_Devis); 
dsQuoteFolder = rootFolder.CreateDocumentSet(folderName, devisCT.Id); 

내가 지금 라이브러리에서 콘텐츠 형식을.

검색된 ContentTypeId가 longuer이며이 ID가 작동합니다.

GetContentTypeByName 메서드를 사용하는 것을 볼 수 있으며 GetContentTypeByID뿐만 아니라 작동합니다.