ASP.NET MVC web sitemde OutputCaching'i kullanmaya çalışıyorum. Sorun şu ki, benim querystring paramların değerini değiştirmeye çalıştığımda, istenen ilk madde için veriyi geri getiriyor! , Özel özellik 'Anahtar' adlı bir sorgu dizesi param denetler ve bellek sözlükte bir denetler - ApiAuthorize:Önbelleğe alma, ASP.NET MVC web sitemde çalışmıyor mu?
İşte
[ApiAuthorize]
[HandleErrorAsJson]
public class SearchController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult ScoreCard(string foo, byte? bar, byte? pewpew)
{
..
}
}
- ... (değişti param adlarıyla) NOT 1 kod bu var olup olmadığını görmek için.
- Not 2: HandleErrorAsJson - özel durum oluşturulduğunda/atılırsa hata iletisini json olarak döndüren özel öznitelik.
ve burada ben bu eyleme yapıyorum iki örnek çağrıları var: -
- /(foo/http://api.MySite.com/search/scorecard?foo=hello+world,+PewPew&key=abcd1234&bar=2
- GET ilk çağrıdan itibaren http://api.MySite.com/search/scorecard?foo=invalid+search+stuff&key=abcd1234&bar=2
böylece verileri GET = Merhaba dünya, Pew Pew) 200 tamam olarak döndürülür. Ardından ikinci sesli arama, bir 200 Tamam, ancak önceki çağrıya ait verilerle döner.
Ayrıca, herhangi bir proxy sunucusu kullanmıyorum. Eğer OutputCache özniteliğini açıklarsam, her şey iyidir.
Ben de ..... (el i cache gerektiği her defasında listeleme) Aşağıdaki denedim
[OutputCache(Duration = 60, VaryByParam = "foo,key,bar,pewpew")]
Hayır şans :(ben emin olmak için ne
Bildirim i API 'Anahtar' parametresini önbellek benzersiz anahtarının bir parçası olarak ekleyin.İnsanlar aynı şeyi aramak istemiyorum, ancak ikinci kişi doğru anahtara sahip değilse, önbelleğe alınmış bir sonuç almamalılar. ancak bir hata mesajı (teknik olarak, 401 Yetkili Değildir, ancak yine de) ...
Thou ghts?
+1 daha doğrudan doğruya tartışmaya odaklanmış durumda. yine de burada sahip olduğu tek sorun olduğunu düşünmüyorum. Yorumunuza da aşağıda cevap verdi. – dove