SharePoint:检索列表时不存在Web命名错误



我在sharepoint服务器2010中工作。我的要求是访问当前网站的所有列表。

在我的sharepoint服务器中,我有以下内容:1) 包含子站点的站点集合

例如:http://servername:portNo/SiteA/default.aspx其中SiteA是子网站。

2) WebApplication及其下的站点。

例如:http://servername:portNo/sites/ProjectA/default.aspx其中ProjectA是网络应用下的站点

现在我需要获得当前网站中的所有列表,我正在使用下面的代码

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

当当前网站是一个网站集,即主网站及其子网站时,上述代码有效。然而,当我的当前网站是web应用程序下的网站时,代码会中断。

异常消息:没有名为"/sites/ProjectA\"的网站。"

但当调试以下代码时,

SPListCollection列出=web。列表;

列表集合未填充。但经过一段时间后,列表集合会被填充并正常工作。有人能告诉我这可能是什么原因吗?以及如何解决此问题?

试试这个:

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)
    }
}

最新更新