即使站点不再存在,SPSite构造函数(new SPSite(mySiteId))也会返回一个缓存条目。我如何防止这种情况发生?
发布于 2010-08-23 19:36:26
我们有同样的问题,但还没有找到解决方案。我们尝试通过调用静态SPSite.Exists(..)来检查SPSite是否存在。方法。对于不再存在的站点,该方法也会返回true。
但是我们发现了一个小的解决方法。我们试图通过调用SPSite的FileNotFoundException属性来触发一个用法。当异常出现时,我们知道该站点不再存在。
捕获异常后,您可以再次调用SPSite.Exists()方法,该方法现在将返回false。
发布于 2010-08-23 18:00:17
虽然我不知道Sharepoint的详细信息,但我可以告诉您,调用new不会返回缓存对象。它将始终是一个新分配的对象,尽管内部可能指向缓存的对象。
发布于 2013-01-07 17:26:49
有点晚了,但我也有同样的问题。
您可以在SPSite类上调用satic方法InvalidateCacheEntry(Uri uri,Guid siteId)。通过传递一个空的guid和您正在使用的SPSite的uri,您应该能够清除缓存并获得当前值。
请注意,这似乎也是刚刚删除的站点的SPSite.Exists返回"true“问题的原因。通过使用InvalidateCacheEntry方法,我能够检测站点的正确状态(已删除或已存在)。我不知道这个变通方法的性能成本是多少,但如果您将来遇到类似的问题,请考虑一下。
https://stackoverflow.com/questions/3546440
复制相似问题