在VaryByParam中为Asp.Net 4排除路由参数

时间:2010-04-17 08:38:03

标签: asp.net caching routing url-routing asp.net-4.0

我的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中定义路由参数?

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

3 个答案:

答案 0 :(得分:4)

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

"video/{title}?id={id}

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

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

EG。见...

Outputcache doesn't work with routing