我的代码如下:
[HttpGet]
[OutputCache(Duration = 90, VaryByParam = "cityCode")]
public ActionResult About(string userName, string cityCode)
{
//do something...
return View();
}
http://localhost:52121/LabOne/MvcCache/About?userName=admin&cityCode=010
答案 0 :(得分:0)
我复制了你的代码并在我的机器上测试了它,并将RouteConfig配置为以下
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "aboutRoute",
url: "{controller}/{action}/{userName}/{cityCode}",
defaults: new { controller = "Home", action = "About", userName = UrlParameter.Optional, cityCode = UrlParameter.Optional }
);
}
}
我遇到同样的问题,我会解释一下:
OutputCache
取决于网址,您提供的示例实际上是两个不同的网址,但它们会产生相同的结果。
因此,请尝试再次请求网址http://localhost:52121/LabOne/MvcCache/About/admin/010。并且您将看到OutputCache
正在运行,MVC将从缓存中提取结果,因为OutputCache
已在之前的时间缓存了此URL。
<强>更新强>
根据这个问题Using outputcache in MVC及其接受的答案,缓存正在使用URL并且与MVC路由系统无关。