我正在编写一些vb.net代码来从中间件中检索一些数据,用它做一些事情,然后将名称/值对的字典保存到缓存中,以便在需要时快速检索。
直到我从缓存中检索对象并且它始终为Null / Nothing之前,似乎一切顺利。
然而,在监视窗口中,我可以看到我的缓存对象,并且其中包含数据。
想想也许它是一个序列化问题我创建了一个继承Dictionary并被标记为可序列化的新类,但我仍然得到相同的结果。
所以现在我有这个课程:
<Serializable()> Public Class SerialDict
Inherits Dictionary(Of String, String)
Public Sub New()
End Sub
End Class
我填充它并将其放入缓存中,如下所示:
Dim Licenses As New SerialDict
For Each r As DataRow In dtLicenses.Rows
Dim prikey As String = r("SettingID").ToString.Trim
Dim decryptionKey As String = GetHash((xx))
Dim licData As String = DecryptData(r("SettingVal"), decryptionKey)
Licenses.Add(r("SettingKey"), licData)
Next
If IsNothing(HttpContext.Current.Cache("Licenses")) Then
HttpContext.Current.Cache.Add("Licences", Licenses, Nothing, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, Nothing)
End If
然后在其他地方我们需要检查数据,所以我尝试像这样检索它:
Dim Licences As SerialDict = CType(HttpContext.Current.Cache("Licenses"), SerialDict)
此时许可证始终为Nothing,但监视窗口显示HttpContext.Current.Cache中的数据(&#34;许可证&#34;)。
有什么建议吗?谢谢!