在MVC 3中,我输出了一个像这样的JsonResult:
[OutputCache(Location = OutputCacheLocation.Server, Duration = 21600, VaryByParam = "None", VaryByCustom = "tenant")]
public JsonResult NotifyTasks(int id) {
return Json(new {pending = 5}, JsonRequestBehavior.AllowGet);
}
}
获取JSON的URL是:
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使用附加的查询字符串?
答案 0 :(得分:4)
我有同样的问题,我认为归结为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");
工作正常。
我希望这就是你想要的。