SORU
22 Temmuz 2009, ÇARŞAMBA


Program aracılığıyla denetleyicisi aksiyon yöntemi için açık outputcache

Eğer denetleyici eylem OutputCache öznitelik bir eylem belirtti, IIS yeniden başlatmadan çıkış önbelleği temizlemek için herhangi bir yolu var mı?

[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
  var someModel = SomeModel.Find( param1, param2 );

  //set up ViewData
  ...

  return RenderToString( "ViewName", someModel );
}

HttpResponse.RemoveOutputCacheItem(string path) temizlemek için kullanarak bakıyorum, ama sorun yol aksiyon yöntemi için o harita için ne olması gerektiğini çözemedim ben. Yine ViewName tarafından oluşturulmuş SEO sayfası ile çalışacağım.

Muhtemelen sadece eğer anlayabilirsem mi yerine HttpContext.Cache içine el ile Ekle RenderToString çıkış yapacağım.

Güncelleme

Lütfen unutmayın OutputCache. VaryByParam ve test kodlanmış yolu "/denetleyicisi/eylem" değil aslında açık outputcache, öyle görünüyor gibi bu maç "/denetleyicisi/eylem/param1/param2".

Muhtemelen seviye önbellek ve el ile önbelleğe çıktı nesneye RenderToString(): için dönmek zorunda kalacağım anlamına gelir(

CEVAP
23 Temmuz 2009, PERŞEMBE


Bu deneyin

var urlToRemove = Url.Action("AjaxHtmlOutputMethod", "Controller");
HttpResponse.RemoveOutputCacheItem(urlToRemove);

GÜNCELLEME:

var requestContext = new System.Web.Routing.RequestContext(
    new HttpContextWrapper(System.Web.HttpContext.Current),
    new System.Web.Routing.RouteData());

var Url = new UrlHelper(requestContext);

GÜNCELLEME:

Bunu deneyin:

[OutputCache(Location= System.Web.UI.OutputCacheLocation.Server, Duration=3600,VaryByParam="param1;param2")]

Aksi takdirde önbellek silme ... çünkü işe yaramaz kullanıcının bilgisayarında HTML çıktısı alınmış

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • Grace Su

    Grace Su

    6 Ocak 2006