2011-03-26 90 views
2

在MVC 3,我outputcaching一個JsonResult這樣破碎後:RemoveOutputCacheItem添加查詢字符串

[OutputCache(Location = OutputCacheLocation.Server, Duration = 21600, VaryByParam = "None", VaryByCustom = "tenant")] 
    public JsonResult NotifyTasks(int id) { 
     return Json(new {pending = 5}, JsonRequestBehavior.AllowGet); 
     } 
    } 

的URL,以獲得JSON是:

http://localhost/foo/notifytasks/1 

有時我無效用的緩存頁面簡單

HttpResponse.RemoveOutputCacheItem("foo/notifytasks"); 

方法簽名已更改並且RemoveOutputCacheItem不再有效。該URL現在具有查詢字符串?status = Status1追加,這打破了RemoveOutputCacheItem。

[OutputCache(Location = OutputCacheLocation.Server, Duration = 21600, VaryByParam = "None", VaryByCustom = "tenant")] 
    public JsonResult NotifyTasks(int id, string status) { 
     return Json(new {pending = 5}, JsonRequestBehavior.AllowGet); 
     } 
http://localhost/foo/notifytasks/1?status=Status1 

如何獲取RemoveOutputCacheItem以使用附加的查詢字符串?

回答

3

我有同樣的問題,我認爲它歸結爲RemoveOutputCacheItem只接受路徑和查詢字符串不是路徑的一部分(路徑<> url?)。 如果你想註冊一個獨立的路線
routes.MapRoute( "DifferentRoute", "{controller}/{action}/{id}/{status}", new { controller = "Information", action = "Index", id = UrlParameter.Optional, status = UrlParameter.Optional } );

然後
HttpResponse.RemoveOutputCacheItem("foo/notifytasks/1/Status1");
工作正常。

我希望這是你想要的。

+0

謝謝。我最終這樣做了,事情再次正常。 – rioja 2011-04-10 15:55:30