我应该处理这个SPWeb吗?

时间:2011-06-13 11:09:32

标签: sharepoint dispose spweb spsite

我希望有人可以帮助我。我需要从SPContext获取当前站点的根网站。使用以下内容轻松完成

SPContext.Current.Site.RootWeb

我很满意SPConite.Current。 Site .RootWeb中的SPSite对象不应该被处理掉,但是我从SPSite得到的SPWeb对象怎么样? 。当SPSite得到处置时,rootweb SPWeb会被处理掉吗?或者我是否需要自己处理它?<​​/ p>

3 个答案:

答案 0 :(得分:6)

不应处理对SPSite.RootWeb的调用。处置SPSite也将部署RootWeb。

SPDisposeCheck中有一个错误,如果你处理它就会标记它,如果你没有处理它(不管怎么说!)我详细说明了我如何解决这个in this blog post,因为你不能使用SPDisposeCheckIgnore提升权限块中的属性。

答案 1 :(得分:4)

不,你不应该。您应该只处理您可以控制的对象。由于上下文是由SharePoint创建的,因此您不会将其丢弃,因为其他对象可能依赖于此。

如果您要使用此对象属性创建自己的SPWeb实例,而不是需要处置它。我......

using (SPSite site = new SPSite(SPContext.Current.Site.RootWeb.Url))
using (SPWeb web = site.OpenWeb()) {
 // do something
}

以下是有关处理SharePoint对象的最佳做法的文章。

http://msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx

答案 2 :(得分:0)

您通常应在using子句中使用SPSite和SPWeb。

using (SPSite site = new SPSite("http://mysite.sharepoint.com"))
{
    using (SPWeb web = site.OpenWeb())
    {
        // TODO: code for using SPWeb object
    }
}

完成后,这将自动正确释放SPWeb对象。