Чтобы действительно увидеть, имеет ли это какое-либо отношение к кешу, старайтесь всегда использовать набор данных из кеша.На проверке, чтобы увидеть, находится ли он в кеше, вместо того, чтобы взять и получить набор данных, а затем использовать его, возьмите его, поместите в кеш, а затем используйте.
Итак, вместо этого:
If Not IsNothing(Cache(cacheKey)) Then
oShow = DirectCast(Cache(cacheKey), DataSet)
Else
oShow = DataServers.dsTMW.GetAgenda(ShowID, 0, "", 0, True)
Cache.Insert(cacheKey, oShow, Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, New TimeSpan(1, 0, 0))
End If
Сделайте это:
If IsNothing(Cache(cacheKey)) Then
oShow = DataServers.dsTMW.GetAgenda(ShowID, 0, "", 0, True)
Cache.Insert(cacheKey, oShow, Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, New TimeSpan(1, 0, 0))
End If
oShow = DirectCast(Cache(cacheKey), DataSet)
Это не "исправит" вашу проблему, но сузит проблему,Если вы всегда получаете 1 строку, то вы знаете, что это связано с извлечением набора данных из кэша.Хотя, если бы мне пришлось угадывать, я бы сказал, что за пределами вашего фрагмента кода происходит что-то еще.