有没有办法查看HttpRuntime.Cache?

时间:2012-09-26 13:25:39

标签: webforms

我有一个Web服务,它在HttpRuntime.Cache中存储经过身份验证的用户令牌,以便在所有后续请求中使用。缓存的项目有24小时的滑动到期时间。

其次我有一个vb.net应用程序,每隔15秒ping一次这个web服务。它会进行一次身份验证,然后将缓存的令牌用于所有后续请求。我的问题是,应用程序似乎以低于24小时滑动到期的随机时间间隔丢失身份验证。然而,随着它每15秒被ping一次,身份验证就永远不会过期。

我正在寻找一种方法来查看HttpRuntime.cache,以尝试确定问题是在webservice安全方法中还是在vb.net应用程序中。我可以以某种方式查看HttpRuntime.cache吗?

Web服务是在Windows Server 2008上使用asp.net 2.0构建的Web表单站点的一部分。

2 个答案:

答案 0 :(得分:1)

我的密钥的名称是未知的,因为它们是系统生成的guid值,用户名作为值。因此,为了查看未知的缓存集合,我使用了一个简单的循环,如下所示。

Dim CacheEnum As IDictionaryEnumerator = Cache.GetEnumerator()
While CacheEnum.MoveNext()
    Dim cacheItem As String = Server.HtmlEncode(CacheEnum.Entry.Key.ToString())
    Dim cacheItem2 As String = Server.HtmlEncode(CacheEnum.Entry.Value.ToString())
    Response.Write(cacheItem & ":" & cacheItem2 & "<br />")
End While

希望这有助于其他人。

答案 1 :(得分:-1)

首先,HttpRuntime.Cache不是存储用户身份验证信息的最佳位置。您应该使用HttpContext.Current.Session来存储此类数据。从技术上讲,允许缓存根据自己的意愿“弹出”其中的内容(无论何时决定)。

如果您确实需要使用缓存,只需执行以下操作即可检查您的商品是否在缓存中:

HttpRuntime.Cache["Key"] == null