我希望有人可以帮助我。我需要从SPContext获取当前站点的根网站。使用以下内容轻松完成
SPContext.Current.Site.RootWeb
我很满意SPConite.Current。 Site .RootWeb中的SPSite对象不应该被处理掉,但是我从SPSite得到的SPWeb对象怎么样? 。当SPSite得到处置时,rootweb SPWeb会被处理掉吗?或者我是否需要自己处理它?</ p>
答案 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对象。