2012-01-04 48 views
0

我在SharePoint服務器2010中工作。我的要求是訪問當前網站的所有列表。SharePoint:檢索列表時沒有Web命名錯誤

在我的SharePoint服務器我有下面這些事情: 1)Sitecollection其中包含子網站

例:http://servername:portNo/SiteA/default.aspx其中站點A爲子網站。

2)WebApplication及其下的網站。

例:http://servername:portNo/sites/ProjectA/default.aspx其中項目A是web應用

現在我需要得到所有列表下的網站中出現在當前網站裏面我是用下面的代碼

SPSite SiteCollection = SPContext.Current.Site; 
SPWeb web = SiteCollection.AllWebs[CurrentSiteAddress];    
List<SPList> listCollection = new List<SPList>(); 
SPListCollection **lists** = web.Lists; 

以上代碼適用於當前網站是sitecollection即主站點及其子站點的情況。但是,當我的當前網站是網絡應用程序下的網站時,代碼會中斷。

異常消息:沒有網站名爲\ 「/網站/項目A \」「

但是,當調試下面的代碼,

SPListCollection 名單 = web.Lists;

列表集合沒有得到填充但延遲一段時間列表集合獲取popul並且沒有任何問題地工作。誰能告訴我可能是什麼原因呢?我該如何解決這個問題?

回答

0

試試這個:

string siteurl = SPContext.Current.Site.Url; 
string weburl = SPContext.Current.Web.ServerRelativeUrl; 

using (SPWeb safeWeb = new SPSite(siteurl).OpenWeb(weburl)) 
{ 
    SPListCollection lists = web.Lists; 
    foreach (SPList list in lists) 
    { 
     //do whatever you want with your list(s) 
    } 
}