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