0

ミドルウェアからいくつかのデータを取得し、それを使用していくつかの処理を行い、必要に応じてすばやく取得できるように、名前と値のペアの辞書をキャッシュに保存する vb.net コードを作成しています。

キャッシュからオブジェクトを取得するまではすべてうまくいくようで、常に Null/Nothing です。

しかし、ウォッチ ウィンドウには、キャッシュされたオブジェクトが表示され、データが含まれています。

おそらくそれはシリアライゼーションの問題だと考えて、ディクショナリを継承し、シリアライズ可能としてマークされた新しいクラスを作成しましたが、それでも同じ結果が得られます。

だから今、私はこのクラスを持っています:

<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