C# SharePoint子网站-迭代列表

C# SharePoint子网站-迭代列表,c#,sharepoint-2007,C#,Sharepoint 2007,我有一个SharePoint网站。我正在尝试打开一个子网站并获取该子网站中所有列表的列表。此代码返回顶层“http://myspserver“列表。 如何仅从/mysubsite获取列表 string webUrl = "http://myspserver/mysubsite"; using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) //Open SP Web { SPListCollection collList = oWebs

我有一个SharePoint网站。我正在尝试打开一个子网站并获取该子网站中所有列表的列表。此代码返回顶层“http://myspserver“列表。
如何仅从/mysubsite获取列表

string webUrl = "http://myspserver/mysubsite";

using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) //Open SP Web
{

    SPListCollection collList = oWebsite.Lists; //Open Lists

    foreach (SPList oList in SPContext.Current.Web.Lists)
    //For Each List Execute this
    {
        ....
    }
}

您应该迭代
collList
,而不是
SPContext.Current.Web.Lists

foreach (SPList oList in collList)
{
}
SPContext.Current.Web.Lists将获取您当前所在的站点。这大概是
http://myspserver
当您运行代码时

另外,请注意您的代码泄漏-您没有处理SPSite对象。它应该是这样的:

using(SPSite site = new SPSite(webUrl))
using(SPWeb oWebsite = site.OpenWeb())
{
}

您创建了
SPListCollection
对象,但是在
foreach
中使用了
SPContext.Current.Web.Lists
,按照如下方式更正代码,一切都会好起来:

string webUrl = "http://myspserver/mysubsite";

using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb()) //Open SP Web
{

    SPListCollection collList = oWebsite.Lists; //Open Lists

    foreach (SPList oList in collList)
    //For Each List Execute this
    {
       ....
    }
}

也许这可以帮助我理解内存泄漏的概念。您是否可以提供任何信息来帮助我理解内存泄漏。@josephs8-我明天会与您联系,但找到一个好的资源应该很容易。Disposing更关心的是释放非托管资源(在某些情况下,这可能是一种更为有限的资源),而与托管内存无关。