我正在编写一些 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)
此时 Licenses 始终为 Nothing,但监视窗口显示 HttpContext.Current.Cache("Licenses") 中的数据。
有什么建议么?谢谢!