Из того, что я вижу, ваш код должен делать то, что вы хотите, чтобы он делал. Единственное, что я хотел бы предложить (что не имеет никакого отношения к вашей проблеме), - это наложить некоторые ограничения на создание, например. для вашего кратчайшего имущества:
Private Static _DataCacheLock as New Object()
Shared ReadOnly Property DataCache As Microsoft.ApplicationServer.Caching.DataCache
Get
If IsNothing(_DataCache) Then
SynchLock _DataCacheLock)
If IsNothing(_DataCache) Then
_DataCache = DataCacheFactory.GetDefaultCache
End If
End SynchLock
End If
Return _DataCache
End Get
End Property
Важно иметь статический DataCacheFactory не только для того, чтобы избежать дорогостоящей инициализации, но и потому, что для каждого из этих создаваемых объектов используется одно из немногих имеющихся у вас соединений с кешем (вы получаете только 5 с наименьшим размером кеша). ).
Статические переменные будут оставаться в области видимости, пока веб-роль или пул приложений не будут перезапущены.
Как вы узнали, что DataCacheFactory
воссоздается?