HttpContext.Cache'de tam bir tamsayı değeri, 5 dakikadan daha uzun bir süre sona erme süresiyle saklıyorum. Ancak, 6 dakika (veya daha uzun) bekledikten sonra, tamsayı değeri hala Önbellekte (yani, mutlak son kullanma geçmiş olsa bile hiçbir zaman kaldırılmaz). İşte kullanıyorum kodu:ASP.net Önbellek Mutlak Süre sonu çalışmıyor
public void UpdateCountFor(string remoteIp)
{
// only returns true the first time its run
// after that the value is still in the Cache
// even after the absolute expiration has passed
// so after that this keeps returning false
if (HttpContext.Current.Cache[remoteIp] == null)
{
// nothing for this ip in the cache so add the ip as a key with a value of 1
var expireDate = DateTime.Now.AddMinutes(5);
// I also tried:
// var expireDate = DateTime.UtcNow.AddMinutes(5);
// and that did not work either.
HttpContext.Current.Cache.Insert(remoteIp, 1, null, expireDate, Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
}
else
{
// increment the existing value
HttpContext.Current.Cache[remoteIp] = ((int)HttpContext.Current.Cache[remoteIp]) + 1;
}
}
I ("127.0.0.1") anahtar "127.0.0.1" ile önbelleğine 1 yerleştirir ve şu andan itibaren 5 dakika mutlak süre sonu UpdateCountFor ilk çalıştırdığınızda beklenildiği gibi. Sonraki her çalışma, önbellekteki değeri artırır. Ancak, 10 dakika bekledikten sonra Önbellekteki değeri artırmaya devam eder. Değer asla sona ermez ve asla Önbellekten kaldırılmaz. Neden?
Anlaşmam, mutlak bir son kullanma süresinin, öğenin yaklaşık o anda kaldırılacağı anlamına gelir. Yanlış bir şey mi yapıyorum? Bir şeyi yanlış anladım mı?
5 dakika sonra önbellekten kaldırılacak olan değeri bekliyorum, ancak projeyi yeniden başlatana kadar orada kalıyor.
Bu, tüm yerel makinemde .NET 4.0 üzerinde çalışıyor.
Web.config dosyasında herhangi bir garip önbellek yapılandırma ayarlarınız var mı? –
Hayır, varsayılan web.config var – smoak