SPSite构造函数返回缓存的实例。

时间:2010-08-23 09:54:29

标签: asp.net sharepoint spsite

SPSite构造函数(new SPSite(mySiteId))返回缓存条目,即使该站点不再存在。我该如何防止这种情况?

3 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题,但尚未找到解决方案。我们尝试通过调用静态SPSite.Exists(..)方法来检查SPSite是否存在。对于不再存在的站点,该方法也返回true。

但我们找到了一些解决方法。我们尝试通过调用SPSite的Usage属性来激发FileNotFoundException。当异常出现时,我们知道该网站不再存在。

捕获异常后,您可以再次调用SPSite.Exists()方法,该方法现在将返回false。

答案 1 :(得分:0)

虽然我不知道Sharepoint的详细信息,但我可以告诉您,调用new从不返回缓存对象。它将始终成为新分配的对象,尽管内部可能指向缓存的对象。

答案 2 :(得分:0)

有点晚了,但是因为我遇到了同样的问题。

您可以在SPSite类上调用satic方法InvalidateCacheEntry(Uri uri,Guid siteId)。通过传递空GUID和您正在使用的SPSite的uri,您应该能够清除缓存并获取当前值。

请注意,这似乎也是SPSite.Exists问题的原因,对于刚刚删除的网站返回“true”。通过使用InvalidateCacheEntry方法,我能够检测到站点的正确状态(已删除或存在)。我不知道这种解决方法的性能成本是多少,但如果您将来遇到类似的问题,请考虑一下。