2011-09-08 4 views
2

ログを記録するのはActionFilterです。私はこれがサーバーに来る要求とパラメータを記録することを望みます。これは正常に動作します。しかし、OutputCachingを追加すると、最初のリクエストだけが記録され、他のリクエストは記録されません。ActionFiltersとOutputCachingを連携させるにはどうすればいいですか?

私ものような振る舞いのActionFilterを作成してみました:

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

     base.OnActionExecuting(filterContext); 
    } 
} 

私はそれがベースコールになるだろう前に、それは私のコードを実行するためにを持っているだろうとoutputcacheから継承された場合、私は考え出し。しかし、私は間違っていると判明し、何とか私のコードは一度だけ実行されます。

答えて

0

私が知る限り、このシステムには、キャッシュに関係なく毎回認可属性が確実に実行される「ハック」があります。おそらく、あなたのフィルタにIAuthorizationFilterを実装させ、OnAuthorizationメソッドであなたの作業を行うことができます。はい、それは厄介なトリックですが、キャッシュシステム自体を「ハッキングする」よりも優れています。

私の頭の中だけで最初のアイデア、私はそれをテストしたことはありません(それが動作するかどうか、私たちは知ってみましょう:)

+0

今では興味深いソリューションです。これの欠点ではありませんが、認可属性にはアクションごとに許可される唯一のものが1つあります。 –

+0

いいえ、あなたは何らかのアクション属性を使用できます。 – rouen

関連する問題