asp.net-mvc – VaryByParam =“*”是否也读取了RouteData.Values?
发布时间:2020-05-23 21:07:54 所属栏目:asp.Net 来源:互联网
导读:在我的asp.net mvc项目中,我在控制器上启用输出缓存,如下所示 [OutputCache(Duration = 100, VaryByParam = *, VaryByHeader = X-Requested-With)]public class CatalogController : BaseController{ public ActionResult Index(
|
在我的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来完成此操作. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – MVC 5中的“CacheProfile”
- asp.net-mvc – DataAnnotations和资源不能很好地发挥作用
- 剃刀 – 捆绑脚本没有得到渲染
- asp.net – 在.NET应用程序上使用Phantom JS生成PDF
- asp.net – 如何修改aspx页面的超时?
- asp.net-web-api – 如何设置katana-project以允许json格式
- asp.net – DropDownList的EditorTemplate
- asp.net-mvc – 将属性分配给@ Html.DropdownList
- ASP.NET Core 1.0 WebSocket安装?
- asp.net-core-mvc – 在ASP.NET Core中,通过将身份验证转发
