SORU
14 EYLÜL 2011, ÇARŞAMBA


MemoryCache Boş : Döner ayarlanmış sonra null

Yeni kullanan MVC 3 uygulama ile ilgili bir sorun var .NET 4 Sistemi.Çalışma zamanı.Önbellekleme MemoryCache. Görünüşte beklenmedik bir zaman sonra, bir şeyler önbellekleme durur fark ettim, ve bu gibi eylemleri boş. Düz ASP.NET MVC: test Görünüm aldı bu kod biraz düşünün

MemoryCache.Default.Set("myname","fred", new CacheItemPolicy() { SlidingExpiration = new TimeSpan(0,5,0) });
Response.Write(MemoryCache.Default["myname"]);

"Fred" basılmış olur. tahmin edilebileceği gibi çalıştığı zaman Sorun oluşmaya başladığında, ancak, Set() rağmen MemoryCache.Default["myname"] değeri null olur. Response.Write() satırında bir kesme noktası ayarlamak ve doğrudan ve önbellek Komut Penceresi - sadece kurun vermiyor kullanarak ayar okuyarak bunu kanıtlayabilirim ve boş kalır! Bunu tekrar çalışma almak için tek yol o zaman bir Uygulama geri neden olur.

Merak uyandırıcı bir uygulama normalde Response.Write() hat kesiliyor ve MemoryCache.Default.Dispose() çalışan tarafından çalışırken meydana gelen sorun provoke edebilirim. Bundan sonra, MemoryCache.Varsayılan kendisi (neden?) NOT null, ama hiçbir şey kurtaramaz üzerinde ayarlayın. Herhangi bir hata neden olmaz, ama sadece bir şey kurtaramaz.

Herkes bunu doğrulayabilir ve açıklar? Keşfettim benim inandığım uygulamayı kendi başına çalışan durduğundabir şeyMemoryCache.Default, ama bana değil İmha!


GÜNCELLEME

Bu prob bıktım artık! CLRProfiler MVC 3 ile çalışmak için görünmüyor. Köy var CLR aracı oldu RedGate KARINCALAR çok iyi oldu. Ama bana tek söyledikleri MemoryCache nesne tarafından bertaraf ediliyorbir şey! Ben de kanıtladı () bir zaman damgası baskı) bir PartialView benim sayfa önbelleğe alınması (tarafından belirtilen OutputCacheAttribute) durdurur olmak önbelleğe sonra bir kaç dakika sonra başlar ferahlatıcı ile her Arama Sayfası. Sadece ortamı aydınlatmak için, doğrudan geliştirme iş istasyonu Win 7 Ultimate üzerinde çalışan IIS 7.5 sunucu üzerinde çalıştırıyorum. Bellek araçları yukarıda sadece oyun nesneleri açısından bellek yaklaşık 9 MB kullanıyorum öneririm.

Çaresizlik içinde önbellekleme benim kod eğer bir kullanılabilir varsa ilk kanca ve Önbelleğe alma işlevselliği kullanmak için bir ortam HttpContext aramak için değiştirdim. Erken testler bu güvenilir olduğunu göstermek, ama pis bir eşek gibi hissediyorum.

Am MemoryCache ve OutputCache ile çalışmak için garanti değil bir duygu elde MVC 3...

CEVAP
30 Mart 2013, CUMARTESİ


İşte haberler. Bunu araştırdık ve EVET, bu bir hata değildir .NET 4.

İyi haber sabit olmasıdır .NET 4.5, bu yüzden eğer yapabilirsen, yükleme güncelleme .NET 4.5 ve sağlam.

Diğer iyi haber bu düzeltme geri taşıdık olmuştur .NET bir QFE olarak sunulacak 4 ve (Hızlı bir Düzeltme...uygulamak sorunu çözecektir bir defalık) #578315. Backported/birkaç gün önce tespit edildi ve en kısa sürede olmalı. Kesin bir tarih almaya çalışacağım, ama erken.

Diğer iyi haber, bunun için bir çözüm var .4 QFE önce NET. Çözüm garip, ama seni engelini kaldırmak olabilir.

using (ExecutionContext.SuppressFlow())     {
          // Create memory cache instance under disabled execution context flow
         return new YourCacheThing.GeneralMemoryCache(…);
}

Bu yardımcı olur umarım.

GÜNCELLEME: http://support.microsoft.com/kb/2828843 ve burada talebinde bulunabilirsiniz Düzeltme: https://support.microsoft.com/contactus/emailcontact.aspx?scid=sw;[LN];1422

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013