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

  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • MrSuicideSheep

    MrSuicideShe

    9 NİSAN 2010
  • Watcher3223

    Watcher3223

    15 Kasım 2007