2016-11-16 5 views
2

OfficeDev.Coreを使用して、C#のProvider Hosted Add-inでSharepoint OnlineのDocumentSet "Folder"を作成しています。 Microsoft.SharePoint.Client.dll V16.1.5813.1200 Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200SharepointオンラインCSOMでDocumentSetを作成できませんMicrosoft.SharePoint.Client.DocumentManagement.dll

これを:私はラインでSharePoint用の最新のCSOMのC#のライブラリを使用しています

数ヵ月間うまくいきました。昨日、Microsoft.SharePoint.Client.DocumentSet.DocumentSetクラスからCreateメソッドがエラーを返しました!

最高のアクセス許可を持つAppOnlyアクセストークンを使用します。

CSOMでドキュメントセットを作成するためのアイデアや回避策がありますか?

おかげ

PS:私はUIでこのdocumentsetを作成しようと、それが正常に動作します。 SharePoint Onlineのに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の例外がSharePoint Onlineので発生します。

注: の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 20102013Onlineに対して検証されています(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私の作品

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と同様に機能します。

関連する問題