void OnSessionRemoved(string key, object value, CacheItemRemovedReason reason)
{
if (expireCallback != null)
{
if (key.StartsWith(CachePrefix, StringComparison.OrdinalIgnoreCase))
{
key = key.Substring(CachePrefixLength);
}
if (value is SessionStateStoreData)
{
expireCallback(key, (SessionStateStoreData)value);
}
else if (value is InProcSessionItem)
{
InProcSessionItem item = (InProcSessionItem)value;
if (item.resettingTimeout)
{
item.resettingTimeout = false;
return;
}
expireCallback(key,
new SessionStateStoreData(
item.items,
item.staticItems,
item.timeout));
item.Dispose();
}
else
{
expireCallback(key, null);
}
}
else if (value is InProcSessionItem)
{
InProcSessionItem item = (InProcSessionItem)value;
if (item.resettingTimeout)
{
item.resettingTimeout = false;
return;
}
item.Dispose();
}
}