2012-09-26 103 views
2

我有一个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的

回答

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

首先,HttpRuntime.Cache上不会存储用户认证信息的最佳场所Web窗体站点的一部分。你应该改用HttpContext.Current.Session来存储这些数据。从技术上讲,允许缓存按照自己的意愿“弹出”它的内容(每当它决定时)。

如果你确实需要使用缓存,你可以简单地做检查,如果你的产品在缓存:

HttpRuntime.Cache["Key"] == null 
相关问题