SharePointがインストールされているのと同じマシンで実行されるコンソールアプリケーションで、Sharepointのすべてのサイト/サブサイトから共有ドキュメントを読み取る必要がありますが、.NetFramework4.0に基づいています。Sharepoint ServerObjectsはFramework3.5に基づいていると思うので、ドキュメントのリストを読み取って返すカスタムWebサービスを作成するというアイデアを思いつきました。このブログに記載されているようにカスタムサービスを作成しましたが、正常に機能しています。これが私のWebサービスメソッドの1つでドキュメントを読み取るための私のコードです。
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を超えるリスト数を取得しようとしても、同じ例外がスローされます。私がここで間違っていることを助けてください。