我的目标是拥有一个全局NoCacheActionFilter
属性(在Global.asax.cs
中注册),默认情况下禁用缓存。
然后我想在控制器所需的动作中添加更细粒度的控件我想添加缓存属性,该属性应该覆盖全局{中定义的属性{ {1}}。
我的方法
NoCacheActionFilter
中的
NoCacheActionFilter
和缓存属性 ...
public override void OnActionExcecuting(ActionExecutingContext filterContext)
{
//disable caching
HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
cache.SetCacheability(HttpCacheability.NoCache);
...
}
请注意public override void OnActionExecuted(ActionExecutedContext filterContext)
{
//add caching
...
cache.SetCacheability(HttpCacheability.Public);
...
}
和OnActionExecuting
之间的区别,它们应该一个接一个地调用,因此应该授予顺序。
然而,显然不有效。有什么建议??我有一种错过一些微不足道的感觉......
答案 0 :(得分:0)
只是一个猜测。更改Cache
的{{1}}对象后,您是否调用了基本过滤器类的方法?
filterContext
和
...
base.OnActionExecuting(filterContext);
}
答案 1 :(得分:-1)
可能是过滤器运行的顺序不是您所期望的。
查看此博客文章,其中解释了它们的运行顺序: http://blog.rajsoftware.com/post/2011/05/14/MVC3-Filter-Ordering.aspx