我正在使用ac#app从SharePoint 2010目录下载文件(我认为文件列表是sharepoint的正确术语,但我只选择了它并且不是100%确定。可以确认一下我有正确的术语?)
我有以下代码,适用于使用Microsoft.Sharepoint.Client
的一个网站:
ClientContext context = new ClientContext(sourcePath.Site);
Web web = context.Web;
Folder spfolder = web.GetFolderByServerRelativeUrl(sourcePath.Folder);
FileCollection files = spfolder.Files;
context.Load(context.Web);
context.Load(spfolder);
context.Load(files);
context.ExecuteQuery();
foreach (File file in files)
{
destfile = System.IO.Path.Combine(move.FileDest, file.Name);
FileInformation f = File.OpenBinaryDirect(context, file.ServerRelativeUrl);
using (var fileStream = new System.IO.FileStream(destfile, System.IO.FileMode.Create))
{
f.Stream.CopyTo(fileStream);
}
}
问题是,在网站1上(http://server/sites/department1/site1)files
显示枚举中的文件并将其复制得很好。站点二((http://server/sites/department2/site2)文件枚举为空(并且因为它的空文件没有下载)
奇怪的部分是当我查看spfolder
站点2时ItemCount
是正确的(5,一个子文件夹和4个文件)所以我不确定发生了什么。
对于权限,我只在代码工作的网站上阅读,而在代码无法运行的网站2上只有完全控制权。
另外一个开发人员向我展示了UNC路径到sharepoint目录(\\site\folder
),该目录有效,但比CSOM访问慢得多。我仍然希望让SharePoint代码正常工作。
答案 0 :(得分:1)
你能为这两个站点提供sourcePath.Site和sourcePath.Folder值吗?
由于您具有完全访问权限,因此错误的权限不足(缺少浏览目录)。我想问题是一个站点在自己的域上,而另一个站点在站点/ SiteName中。但这只是猜测。
确保sourcePath.Folder的格式如下:
/[web]/[libraryName]/[folder]
或
[libraryName]/[folder]