Outputcache不适用于路由

时间:2010-02-04 11:21:17

标签: asp.net routing outputcache

我在标准ASP.Net Web应用程序项目应用程序中使用没有MVC的System.Web.Routing路由。这主要是为了在我们正在开发的门户网站中获取更整洁的网址(而不是〜/ default.aspx?contentid = 123我们有〜/ {contentsubject}。门户网站未经授权,所有信息都在网址中,因此在缓存中我们可以缓存完整的页面。

当我尝试启用输出缓存时,我注意到没有进行缓存。似乎完全忽略了outputcache页面指令。这是真的还是我错过了什么?这可以解决吗?

我制作了一个小测试应用程序(我上传到http://www.4shared.com/file/196605919/31903b07/OutputCacheTest.html),其中只包含一个使用母版页和用户控件的页面Webform1.aspx。所有三个输出当前日期和时间。

当我请求http // localhost / OutputcacheTest / Webform1.aspx时,10秒缓存按预期工作,即显示的时间仅每10秒更新一次。

该应用程序还定义了一个捕获所有请求的通配符路由,并返回与处理程序相同的Webform1.aspx。因此,在请求http // localhost / OutputcacheTest / myroute时,会执行相同的页面,但现在缓存不起作用,即每个请求都会显示当前时间。

注意:使用内置开发Web服务器时,两种方案都有效,但只有IIS似乎有这个问题。

在这种情况下,有没有人有解决方案或解决方法如何启用输出缓存?

2 个答案:

答案 0 :(得分:1)

您现在需要控制器操作的[OutputCache]属性。

使用MVC操作可以缓存结果(可以通过某些参数值进行变化)。

答案 1 :(得分:1)

我通过使模块和处理程序注册与本文(http://msdn.microsoft.com/en-us/magazine/dd347546.aspx)完全相同来完成此工作。

早些时候我在街区的最后一次注册,现在我将它们移到了顶部。我还在此块中添加了属性runAllManagedModulesForAllRequests =“true”     <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">

所以现在outputcache页面指令正在运行!