次のコードを使用して、Web アプリケーション サイト コレクション内のすべての「お知らせ」リストを取得しています。
残念ながら、現在のユーザーがそのサイトへのアクセス許可を持っていない場合があり、try ブロック内であってもページが例外で失敗します。
匿名ユーザーでさえ結果が得られない場合に、すべてのユーザーに対して安全に次のことを行う正しい方法は何でしょうか?
static public List<SPListMeta> AllSiteAnnouncementsLists()
{
var returnList = new List<SPListMeta>();
foreach (SPSite oSiteCollection in SPContext.Current.Web.Site.WebApplication.Sites)
{
var collWebs = oSiteCollection.AllWebs;
try
{
foreach (SPWeb oWebsite in collWebs)
{
using (oWebsite)
{
var collSiteLists = oWebsite.GetListsOfType(SPBaseType.GenericList);
returnList.AddRange(from SPList oList in collSiteLists where oList.Title == "Announcements" select new SPListMeta(oList));
}
}
}
catch
{
}
}
return returnList;
}