0

我正在编写一些 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") 中的数据。

有什么建议么?谢谢!

4

0 回答 0