SPContext有什么区别。电流。网络。URL和SPContext。电流。使用SPSite对象时的站点?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/95812

  •  10-12-2019
  •  | 
  •  

SPSite spsite1=new SPSite(SPContext.Current.Web.URL);

SPSite spsite2=SPContext.Current.Site;

有什么区别,我们什么时候决定使用哪一个?

我觉得两者都给了我们网站集对象。

例子:: SPWeb spweb=spsite1.RootWeb; 将意味着相同的 spsite2.RootWeb; 那为什么有两种方法可以做到呢?

有帮助吗?

解决方案

SPSite spsite1=new SPSite(SPContext.Current.Web.Url); 会给你 SPSite 对象。但它将是网站集对象只有当 SPContext.Current.Web.Url 是根网的。如果web对象是子网站的对象,则 SPSite 对象不会是网站集对象。第二种说法 SPSite spsite2=new SPSite(SPContext.Current.Site); 是错误的,因为没有超载 SPSite 其中有 SPSite 作为参数。

更新资料

如果目的是获取rootweb,那么第二个是更好的方法,因为您没有实例化一个新的 SPSite 对象。此外,在第一种情况下,您将需要处理 SPSite 当您创建一个新的对象时,与第二个对象相比, SPSite 通过检索 SPContext 不应明确处置。

其他提示

Site1和site2都返回相同的网站集(SPSite)对象。通过在两个对象上调用RootWeb属性,我们可以获得相同的顶级网站(SPWeb)对象。

指示1:SPSite spsite1=新的SPSite(SPContext。电流。网络。URL);

过程:如果我们在subsite中,并且我们正在调用上面的代码,首先它获取当前subsite web url并将其传递给SPSite构造函数以获取当前网站集对象。

指示2:SPSite spsite2=SPContext。电流。网站;

过程:现在我们在subsite中,我们正在调用上面的代码,它直接重试网站集对象。没有寻找web url参数来获取SiteCollection。

结果:

spsite1.RootWeb和spsite2。RootWeb返回相同的顶级web SPWeb对象。

spsite1.OpenWeb()返回子网站(SPWeb)对象,如果我们在子网站。spsite2。OpenWeb()返回顶级站点(SPWeb)对象,即使我们在subsite中。

对于spsite1,我们必须调用dispose方法来处理SPSite对象。但是对于spsite2,sharepoint将处理SPSite对象。

许可以下: CC-BY-SA归因
scroll top