1

我的 global.asax 文件中有一个路由设置:

routes.MapPageRoute("video-browse", "video/{id}/{title}/", "~/routeVideo.aspx");

我的 routeVideo.aspx 页面有缓存设置:

<%@ OutputCache Duration="10" Location="ServerAndClient" VaryByParam="id" %>

但是当我在此之后请求http://localhost/video/6/example1http://localhost/video/6/example2时,页面会再次创建。所以我认为 VaryByParam 适用于 * 但我只想在 id 更改时进行编译。有没有办法在 VaryByParam 定义路由参数?

我想要这个,因为标题参数对我来说并不重要。它仅适用于搜索引擎,并且未在我的代码中使用。

4

3 回答 3

4

VaryByParam 处理问号“?”后面的参数,但您的路由将其隐藏到路径中。这就是为什么缓存总是“看到”不同的 url。修复它改变

"video/{title}?id={id}
于 2010-04-17T12:24:38.510 回答
0

您可能需要在 web.config 中将validateIntegratedModeConfiguration设置为 false。

例如。看...

输出缓存不适用于路由

于 2010-05-04T23:02:59.150 回答
0

尝试这个:

routes.MapPageRoute("video-browse", "video/{id}/{title}/", 
                    "~/routeVideo.aspx?id={id}"); 
于 2010-05-02T14:05:31.583 回答