【发布时间】:2015-01-28 05:09:11
【问题描述】:
我正在开发一个 c# 应用程序以从 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);
}
}
问题是站点一 (http://server/sites/department1/site1) files 显示枚举中的文件并很好地复制它们。站点二((http://server/sites/department2/site2)文件枚举是空的(因为它是空的,所以没有文件被下载)
奇怪的是,当我查看站点 2 的 spfolder 时,ItemCount 是正确的(5 个,一个子文件夹和 4 个文件),所以我不确定发生了什么。
对于权限,我只在代码工作的站点一上阅读,在代码不起作用的站点二上阅读完全控制。
顺便说一句,其他开发人员向我展示了指向共享点目录 (\\site\folder) 的 UNC 路径,该路径有效,但比 CSOM 访问慢得多。不过,我仍然希望让 SharePoint 代码正常工作。
编辑:我的术语略有偏差,它们不是不同的网站,而是同一网站集中的 2 个不同的网站
【问题讨论】:
-
我遇到了同样的问题。你想出解决方案了吗?如果有,能发一下吗?
-
@dotnetN00b 不幸的是我还没有找到解决方案。我仍然在业余时间致力于它。在我发现我可以使用 UNC 路径访问“文件夹”之后(不确定它是如何配置的,但它可以工作)我继续前进,直到它成为一个阻止程序。如果我弄清楚发生了什么,我会更新,因为我可以使用 CSOM 访问的网站的 UNC 访问速度要慢得多
-
如果您能分享该代码,我将不胜感激。谢谢。
-
@dotnetN00b unc 路径是 sharepoint 2007 + 的功能,我确信一些谷歌搜索会得到启用它的答案。我只是一名开发人员,而不是共享点管理员。
标签: c# sharepoint sharepoint-2010