0

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

4

3 回答 3

1

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

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

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

于 2010-08-23T11:36:26.050 回答
0

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

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

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

于 2013-01-07T09:26:49.450 回答
0

虽然我不知道 Sharepoint 的详细信息,但我可以告诉你调用new永远不会返回缓存的对象。它总是一个新分配的对象,尽管内部可能指向缓存的对象。

于 2010-08-23T10:00:17.180 回答