gpt4 book ai didi

asp.net-mvc - 添加查询字符串后,RemoveOutputCacheItem 损坏

转载 作者:行者123 更新时间:2023-12-02 03:08:17 24 4
gpt4 key购买 nike

在 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 使用附加的查询字符串?

最佳答案

我也遇到了同样的问题,我认为这可以归结为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"); 工作正常。

我希望这就是你想要的。

关于asp.net-mvc - 添加查询字符串后,RemoveOutputCacheItem 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com