public override void RemoveItem (HttpContext context,
string id,
object lockId,
SessionStateStoreData item)
{
EnsureGoodId (id, true);
string CacheId = CachePrefix + id;
Cache cache = HttpRuntime.InternalCache;
InProcSessionItem inProcItem = cache [CacheId] as InProcSessionItem;
if (inProcItem == null || lockId == null || lockId.GetType() != typeof(Int32) || inProcItem.lockId != (Int32)lockId)
return;
bool locked = false;
try {
if (inProcItem.rwlock.TryEnterWriteLock (lockAcquireTimeout))
locked = true;
else
throw new ApplicationException ("Failed to acquire lock after");
cache.Remove (CacheId);
} catch {
throw;
} finally {
if (locked)
inProcItem.rwlock.ExitWriteLock ();
}
}