2016-11-16 3 views
2

Ich verwende die OfficeDev.Core, um DocumentSet "Ordner" in Sharepoint Online in einem Provider Hosted Add-in in C# zu erstellen.Sharepoint Online kann DocumentSet mit CSOM nicht erstellen Microsoft.SharePoint.Client.DocumentManagement.dll

ich die neueste CSOM C# -Bibliothek für Sharepoint bin mit On line: Microsoft.SharePoint.Client.dll V16.1.5813.1200 Microsoft.SharePoint.Client.DocumentManagement.dll V16.1.5813.1200

Diese funktionierte gut für Monate und gestern bemerken wir, dass die Methode Create aus der Klasse Microsoft.SharePoint.Client.DocumentSet.DocumentSet einen Fehler zurückgibt unbekannt!

Ich benutze ein AppOnly Access Token mit höchsten Berechtigungen.

Haben Sie Ideen oder Problemumgehungen, um ein Dokument mit CSOM zu erstellen?

Dank

PS: Ich versuche, diese DocumentSet mit der Benutzeroberfläche zu erstellen und es funktioniert gut.

Antwort

1

die Tat zumindest ich erlebe das gleiche Problem (Microsoft.SharePoint.Client.UnknownError Ausnahme) zur Zeit bei dem Versuch, ein Dokument zu erstellen, über CSOM API in Sharepoint Online gesetzt.

Wie reproduzieren?

Während ein Dokument gesetzt über Microsoft.SharePointOnline.CSOM library erstellen:

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

die Ausnahme von Microsoft.SharePoint.Client.UnknownError tritt in Sharepoint Online.

Hinweis: der Fehler in den aktuellen und früheren Versionen von Microsoft.SharePointOnline.CSOM Bibliothek erkannt wurde. Das lässt mich denken, dass es nicht mit CSOM Bibliothek aber eher mit SharePoint Online CSOM Service selbst ist.

Umgehung

Aber es gibt eine Abhilfe, die einen Dokumentensatz (ohne Microsoft.SharePoint.Client.DocumentSet Namespace beteiligt) erstellen können

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

noch gegen Sharepoint 2010 prüft wurde, 2013 und Online Versionen

Nutzungs

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

Ich finde eine Lösung zu diesem Beitrag:

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

ich das gleiche Problem auf meinem Mieter am Montagmorgen erfuhr 14/11/2016

Die Schaffung des Dokumentsatzes stoppen plötzlich

Der vorhandene Code:

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

und Lösung, die funktioniert für mich ist:

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

Ich nehme jetzt den Inhaltstyp aus der Bibliothek, wo ich die DocumentSet erstellen möchten.

Die abgerufene ContentTypeId ist länger und diese ID funktioniert.

Sie können feststellen, dass ich die Methode GetContentTypeByName und es funktioniert so gut wie GetContentTypeByID.

Verwandte Themen