Hi, I am trying to move DocumentSet from one library to another. User has Contribute permissions on site. Everything works when user tries to move emty DocumentSet, but then DocumentSet has some documents inside - user gets "Access denied" error (even if I use SPSecurity.Run.With.ElevatedPrivileges).
If user have "Full Control" permissions - everything works fine.
Maybe someone faced with similar problem?
here is my code:
private DocumentSet moveDocumentSet(string newDataSetName, Guid currentList, int dsid, SPFolder destinationFolder)
{
try
{
DocumentSet result = null;
SPSecurity.RunWithElevatedPrivileges(delegate() {
using (SPSite site = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
using (MemoryStream ms = new MemoryStream())
{
SPList clist = web.Lists.GetList(currentList, false);
SPListItem citem = clist.GetItemById(dsid);
DocumentSet documentSet = DocumentSet.GetDocumentSet(citem.Folder);
SPContentType ct = citem.ContentType;
documentSet.Export(ms);//byte[] data = documentSet.Export();
Hashtable properties = citem.Folder.Properties;
result = DocumentSet.Import(ms, newDataSetName, destinationFolder, ct.Id, properties, web.CurrentUser);
}
}
}
});
}
return result;
}
catch(Exception ex)
{
return null;
}
}