为什么 ASP.NET Core CacheTagHelper vary-by-route 在路由更改时不刷新缓存?

Why does ASP.NET Core CacheTagHelper vary-by-route not refresh Cache on route change?

我定义了以下控制器方法,它创建了两个不同的 asp.net 核心路由(名为 route1 和 route2)。我期待当我调用下面的 cshtml 时:

localhost/route1
localhost/route2

我的缓存将被替换,但事实并非如此。

(传入参数 {param} 不会改变我的预期结果)

控制器页面

    [Route("/route1/{param}", Name = "route1")]
    public IActionResult Route1(string param)
    {
        ViewData["Message"] = "route1.";
        return View("CacheTagHelper/vary-by-route");
    }

    [Route("/route2/{param}", Name = "route2")]
    public IActionResult Route2(string param)
    {
        ViewData["Message"] = "route2.";
        return View("CacheTagHelper/vary-by-route");
    }

查看页面

<Cache vary-by-route="route1,route2">Time Inside Cache Tag Helper : @DateTime.Now</Cache>

没有路由值键控 route1/route2。也就是您的缓存 TagHelper 应该是:

<cache vary-by-route="param">Time Inside Cache Tag Helper : @DateTime.Now</cache>

我从发布到 github 存储库的旧问题中找到了一个很好的定义。

A comma-separated list of route data parameter names that the result should be varied by. The route data parameter values are used as part of the cache entry key.

https://github.com/aspnet/Mvc/issues/1552