SPDisposeCheck告诉我不要丢弃Sharepoint Web

时间:2012-06-01 09:12:18

标签: sharepoint-2010 dispose using

using (var web = SPContext.Current.Site.RootWeb)
{
    //Some code
}

SPDisposeCheck工具告诉我不要处理这个对象 - 但我认为这是应该处理SP对象的一个​​主要例子!?

SPDisposeCheck的输出:

注意:不应在此对象上调用Dispose。 初始分配:web:= Microsoft.SharePoint.SPContext.get_Current()。{Microsoft.SharePoint.SPContext} get_Site()。{Microsoft.SharePoint.SPSite} get_RootWeb()

2 个答案:

答案 0 :(得分:1)

SPContext对象在请求的整个生命周期中都是活动的。如果您处置它的内部Web或站点属性,您将破坏可能在请求的生命周期中请求此属性的其他SharePoint组件。

简单来说,只处理您创建的Web和站点。不是由SharePoint引擎管理的。

PS:您考虑过http://sharepoint.stackexchange.com吗?

答案 1 :(得分:-1)

这是真的正确吗? 如果您查看SPSite.RootWeb的代码,它看起来像这样:

public SPWeb RootWeb
{
    get
    {
       if (this.m_rootWeb == null)
       {
          this.m_rootWeb = this.OpenWeb(this.ServerRelativeUrl);
          this.m_rootWebCreated = true;
       }
       return this.m_rootWeb;
    }
}

它实际上是一个OpenWeb然后你应该处理它。或者我错了吗?