我的目標是擁有一個全局的NoCacheActionFilter
屬性(在Global.asax.cs
中註冊),默認情況下會禁用緩存。在Global ActionFilter中定義的覆蓋緩存
然後我想在加上我的控制器所需要的操作我想補充一個緩存屬性,它應該覆蓋全球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
和OnActionExecuted
之間的區別,他們應該是在oth之後援引一個呃,所以應該批准這個命令。
但是,顯然這個不是工作。有什麼建議麼??我有這種感覺錯過了一些微不足道的事情......
都能跟得上...不幸的是增加它並沒有改變行爲......還是全局緩存沒有被覆蓋。是否有一個約束,即全局動作過濾器總是勝過那些專門在控制器動作中聲明的那些? (雖然這真的很尷尬) – Juri