2016-11-16 4 views
2

J'utilise OfficeDev.Core pour créer DocumentSet "Dossier" dans sharepoint Online dans un complément hébergé par le fournisseur en C#.Sharepoint Online Impossible de créer DocumentSet avec CSOM Microsoft.SharePoint.Client.DocumentManagement.dll

J'utilise la bibliothèque CSOM C# lastest pour Sharepoint en ligne: Microsoft.SharePoint.Client.dll V16.1.5813.1200 Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200

Cette fonctionnait bien depuis des mois et hier on remarque que la méthode Create de la classe Microsoft.SharePoint.Client.DocumentSet.DocumentSet retourne une erreur inconnue! J'utilise un jeton d'accès AppOnly avec les autorisations les plus élevées.

Avez-vous des idées ou des solutions de contournement pour créer un ensemble de documents avec CSOM?

Merci

PS: Je tente de créer ce avec l'interface utilisateur jeu de documents et il fonctionne très bien.

Répondre

1

En effet, au moins je rencontre au moment de la même question (Microsoft.SharePoint.Client.UnknownError exception) tout en essayant de créer un ensemble de documents via l'API CSOM dans SharePoint Online.

Comment reproduire?

Lors de la création d'un document établi par 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(); 

l'exception de Microsoft.SharePoint.Client.UnknownError se produit dans SharePoint Online.

Note: l'erreur a été détectée dans les versions les plus récentes et précédentes de la bibliothèque Microsoft.SharePointOnline.CSOM. Cela me fait penser qu'il n'est pas lié à la bibliothèque CSOM mais plutôt au service SharePoint Online CSOM lui-même.

Solution

Mais il existe une solution qui permet de créer un ensemble de documents (sans Microsoft.SharePoint.Client.DocumentSet espace de noms impliqués)

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

a été vérifié contre SharePoint 2010, 2013 et Online versions

Utilisation

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

je trouve une solution sur ce post:

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

J'ai vécu le même problème sur mon locataire lundi matin 14/11/2016

La création du documentet cesser de fonctionner soudainement

Le code existant:

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

et d'une solution qui fonctionne pour moi est:

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

Je prends maintenant le type de contenu de la bibliothèque où je veux créer le jeu de documents.

Le ContentTypeId récupéré est plus long et cet ID fonctionne.

Vous pouvez remarquer que j'utilise la méthode GetContentTypeByName et cela fonctionne aussi bien que GetContentTypeByID.