1

我必须在我的控制台应用程序中从 Sharepoint 的所有站点/子站点读取共享文档,该应用程序将在安装 Sharepoint 的同一台机器上运行,但它将基于 .Net Framework 4.0。我相信,Sharepoint Server Objects 是基于 Framework 3.5,所以我想出了创建自定义 Web 服务的想法,该服务读取和返回文档列表。我创建了本博客中提到的自定义服务,它运行良好。这是我在我的一种 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,它仍然会引发相同的异常。请帮助我在这里做错了什么?

4

1 回答 1

0

查看SharePoint 客户端对象模型。它提供了一种调用 SharePoint Web 服务的简单方法。在客户端应用程序中使用服务器对象模型很棘手,并且不能提供良好的身份验证技术。我相信您的问题在于身份验证,因为您无法为服务器对象模型设置凭据。

于 2012-06-14T13:28:40.420 回答