有没有办法查看HttpRuntime.Cache?
问题描述:
我有一个webservice存储一个认证的用户令牌在HttpRuntime.Cache中用于所有后续请求。被缓存的项目在24小时内有滑动到期。有没有办法查看HttpRuntime.Cache?
其次,我有一个vb.net应用程序每15秒钟ping这个webservice。它获得一次认证,然后为所有后续请求使用缓存的令牌。我的问题是,该应用程序似乎失去了身份验证的时间间隔小于24小时的滑动到期时间。然而,每隔15秒就会发生一次认证,认证不会过期。
我正在寻找一种方法来查看HttpRuntime.cache来尝试并确定问题是在webservice安全方法还是在vb.net应用程序中。我能以某种方式查看HttpRuntime.cache吗?
WebService的是,与asp.net 2.0内置了Windows Server 2008的
答
的,因为他们的系统产生了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
希望这有助于他人。
答
首先,HttpRuntime.Cache上不会存储用户认证信息的最佳场所Web窗体站点的一部分。你应该改用HttpContext.Current.Session来存储这些数据。从技术上讲,允许缓存按照自己的意愿“弹出”它的内容(每当它决定时)。
如果你确实需要使用缓存,你可以简单地做检查,如果你的产品在缓存:
HttpRuntime.Cache["Key"] == null