asp.net-mvc – VaryByParam =“*”是否也读取了RouteData.Value
发布时间:2020-12-16 00:12:00  所属栏目:asp.Net  来源:网络整理 
            导读:在我的asp.net mvc项目中,我在控制器上启用输出缓存,如下所示 [OutputCache(Duration = 100,VaryByParam = "*",VaryByHeader = "X-Requested-With")]public class CatalogController : BaseController{ public ActionResult Index(string seller) { // I do
                
                
                
            | 在我的asp.net mvc项目中,我在控制器上启用输出缓存,如下所示 
  
  
  [OutputCache(Duration = 100,VaryByParam = "*",VaryByHeader = "X-Requested-With")]
public class CatalogController : BaseController
{
    public ActionResult Index(string seller)
    {
        // I do something
    }
}它工作得很好,直到创建我自己的Route类,如下所示 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;
    }
}然后,action方法将卖方作为参数.我通过始终提供不同的卖家参数来测试它,但它从缓存中获取输出而不是调用方法. 设置VaryByParam =“*”也会因为asp.net mvc中的RouteData.Values而异吗? 我正在使用ASP.Net 4 MVC 3 RC 2 解决方法
 输出缓存机制因URL,QueryString和Form而异.这里没有表示RouteData.Values.原因是输出缓存模块在路由之前运行,因此当第二个请求进入并且输出缓存模块正在寻找匹配的缓存条目时,它甚至没有要检查的RouteData对象. 
  
  通常这不是问题,因为RouteData.Values直接来自URL,已经考虑到了.如果要根据某个自定义值进行更改,请使用VaryByCustom和GetVaryByCustomString来完成此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
相关内容
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- 有没有相当于PrimeFaces for ASP.NET的东西?
- asp.net-mvc – IIS7 ASP.NET MVC客户端缓存标头不起作用
- asp.net-mvc – MVC在会话中保存令牌
- 在ASP.NET MVC Web API服务和MVC客户端体系结构中实现身份验
- asp.net – JQGrid不显示数据
- 如何实现ASP.NET Web应用程序的自动错误/崩溃报告?
- asp.net – 执行sql脚本而不是等待完成
- asp.net-mvc – ASP.NET MVC自定义成员资格提供程序Web.con
- 在ASP.NET中,什么决定了HostingEnvironment.IsDevelopmentE
推荐文章
            站长推荐
            
        热点阅读
            