首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VaryByParam="*“也读取RouteData.Values吗?

VaryByParam="*“也读取RouteData.Values吗?
EN

Stack Overflow用户
提问于 2010-12-23 20:16:47
回答 2查看 3K关注 0票数 5

在我的asp.net mvc项目中,我在控制器上启用了输出缓存,如下所示

代码语言:javascript
复制
[OutputCache(Duration = 100, VaryByParam = "*", VaryByHeader = "X-Requested-With")]
public class CatalogController : BaseController
{
    public ActionResult Index(string seller)
    {
        // I do something
    }
}

它工作得很好,直到创建了我自己的Route类,如下所示

代码语言:javascript
复制
public class MyRoute : Route
{
    // there is a constructor here..

    // I override this method.. 
    // just to add one data called 'seller' to RouteData
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        var data = base.GetRouteData(httpContext);
        if (data == null) return null;

        var seller = DoSomeMagicHere();

        // add seller
        data.Values.Add("seller", seller);

        return data;
    }

}

然后,动作方法将以seller作为参数。我总是通过提供不同的seller参数来测试它,但它从缓存中获取输出,而不是调用该方法。

在asp.net mvc中,设置VaryByParam="*“是否也因RouteData.Values而异?

我使用的是ASP.Net 4 MVC 3 RC 2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-24 05:21:55

输出缓存机制因URL、QueryString和表单而异。这里没有表示RouteData.Values。这样做的原因是输出缓存模块在路由之前运行,因此当第二个请求传入时,输出缓存模块查找匹配的缓存条目时,甚至没有RouteData对象可供检查。

通常这不是问题,因为RouteData.Values直接来自URL,而URL已经被占了。如果您想改变一些自定义值,可以使用VaryByCustomGetVaryByCustomString来实现。

票数 7
EN

Stack Overflow用户

发布于 2012-01-03 18:31:50

如果您删除了VaryByParam = "*“,它应该在缓存时使用您的操作方法参数值。

ASP.NET MVC3的输出缓存系统不再要求您在控制器操作方法上声明VaryByParam属性时指定OutputCache属性。当您的操作方法上有显式参数时,MVC3现在会自动更改输出缓存条目-允许您干净地启用输出...

来源:http://weblogs.asp.net/scottgu/archive/2010/12/10/announcing-asp-net-mvc-3-release-candidate-2.aspx

代码语言:javascript
复制
[OutputCache(Duration = 100, VaryByHeader = "X-Requested-With")]
public class CatalogController : BaseController
{
    public ActionResult Index(string seller)
    {
        // I do something
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4518671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档