我必须在我的控制台应用程序中从Sharepoint的所有站点/子站点读取共享文档,该应用程序将在安装了Sharepoint的同一台计算机上运行,但它将基于.Net Framework 4.0 。我相信,Sharepoint Server Objects基于Framework 3.5,所以我想出了创建自定义Web服务的想法,该服务读取并返回文档列表。 我创建了this blog中提到的自定义服务,它运行正常。这是我用我的一种Web服务方法阅读文档的代码。
SPWebApplication webApp = SPContext.Current.Site.WebApplication;
#region Traverse all sub sites
foreach (SPSite subSite in webApp.Sites)
{
using (SPWeb sWeb = subSite.OpenWeb())
{
foreach (SPList list in sWeb.Lists)
{
if (list.BaseType == SPBaseType.DocumentLibrary &&
list.Hidden == false && list.BaseTemplate == SPListTemplateType.DocumentLibrary &&
list.Title.Equals("Style Library", StringComparison.InvariantCultureIgnoreCase) == false &&
list.Title.Equals("Site Assets", StringComparison.InvariantCultureIgnoreCase) == false)
但是当我到达以下行“ foreach(sWeb.Lists中的SPList列表)”时,它会抛出类型“'System.Threading.ThreadAbortException'的异常“
即使我尝试将列表计数高于此foreach循环 sWeb.Lists.count ,它仍然会抛出相同的异常。 请帮助我,我在这里做错了什么?
答案 0 :(得分:0)
查看SharePoint Client Object Model。它提供了一种调用SharePoint Web服务的简便方法。在客户端应用程序中使用服务器对象模型很棘手,并且不提供良好的身份验证技术。我相信您的问题在于身份验证,因为您无法设置服务器对象模型的凭据。