public WebCacheInstanceFactory ExpiresAfter(TimeSpan duration) { if (duration != Cache.NoSlidingExpiration) { _expirationTime = Cache.NoAbsoluteExpiration; _expirationBehavior = CachedItemExpirationBehavior.AfterTimeSpan; } _expirationDuration = duration; return(this); }
public WebCacheInstanceFactory ExpiresOn(DateTime absoluteExpiration) { if (absoluteExpiration != Cache.NoAbsoluteExpiration) { _expirationDuration = Cache.NoSlidingExpiration; _expirationBehavior = CachedItemExpirationBehavior.AtScheduledDate; } _expirationTime = absoluteExpiration; return(this); }
public object ActivateInstance(IObjectAssemblySpecification registration) { Cache cache = HttpRuntime.Cache; string key = registration.Key; object instance = cache[key]; if (instance == null) { lock (_syncRoot) { instance = cache[key]; if (instance == null) { instance = registration.CreateInstance(); if (_expirationTime == Cache.NoAbsoluteExpiration && _expirationDuration == Cache.NoSlidingExpiration) { _expirationBehavior = CachedItemExpirationBehavior.NeverExpires; } switch (_expirationBehavior) { case CachedItemExpirationBehavior.NeverExpires: cache.Insert(key, instance, _dependencies, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, _cachePriority, _onRemoveCallback); break; case CachedItemExpirationBehavior.AtScheduledDate: cache.Insert(key, instance, _dependencies, _expirationTime, Cache.NoSlidingExpiration, _cachePriority, _onRemoveCallback); break; case CachedItemExpirationBehavior.AfterTimeSpan: cache.Insert(key, instance, _dependencies, DateTime.UtcNow.Add(_expirationDuration), Cache.NoSlidingExpiration, _cachePriority, _onRemoveCallback); break; case CachedItemExpirationBehavior.AfterNotUsedInTimeSpan: cache.Insert(key, instance, _dependencies, Cache.NoAbsoluteExpiration, _expirationDuration, _cachePriority, _onRemoveCallback); break; } } } } return(instance); }