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)value).Dispose ();
}
}