0
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()

4

2 回答 2

1

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

为简单起见,只配置您创建的 Web 和 Site。不是由 SharePoint 引擎管理的。

PS:你考虑过在http://sharepoint.stackexchange.com上发帖吗?

于 2012-06-01T09:17:32.250 回答
-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,然后你应该处理它。还是我错了?

于 2012-10-13T08:40:24.983 回答