SPSite构造函数(new SPSite(mySiteId)
)返回缓存条目,即使该站点不再存在。我该如何防止这种情况?
答案 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方法,我能够检测到站点的正确状态(已删除或存在)。我不知道这种解决方法的性能成本是多少,但如果您将来遇到类似的问题,请考虑一下。