2011-09-08 170 views
2

我有一個ActionFilter做記錄。我希望這可以記錄進入服務器的請求和參數。這工作正常。但是,當我添加OutputCaching時,這隻會記錄第一個請求,而不會記錄其他請求。如何讓ActionFilters和OutputCaching一起工作?

我甚至嘗試創建表現爲這樣一個ActionFilter:我想如果我從輸出緩存繼承

public class OutputCacheLoggingFilterAttribute : OutputCacheAttribute 
{  
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     //Do my stuff 

     base.OnActionExecuting(filterContext); 
    } 
} 

,它將HAVE運行我的代碼之前,它會得到基本的呼叫。然而,我被證明是錯誤的,不知何故,我的代碼只會執行一次。

回答

0

嗯,據我所知,在這個系統中存在一個「黑客攻擊」,它確保每次都執行授權屬性,而不管緩存。也許你可以讓你的過濾器實現IAuthorizationFilter並在OnAuthorization方法中完成你的工作。是的,這是一個討厭的伎倆,但我認爲還是比「黑客」緩存系統本身更好。

讓我們知道它是否有效(我從來沒有測試過它,只是在我頭上的第一個想法:)

+0

現在,這是一個有趣的解決方案。雖然這不是授權屬性的唯一不足之處嗎? –

+0

不,您可以使用任何數量的授權屬性。 – rouen