2

私の目的は、デフォルトでキャッシングを無効にするグローバルNoCacheActionFilter属性(に登録されている)を持つことです。Global.asax.cs

次に、グローバルで定義されたものをオーバーライドする必要があるキャッシング属性を追加したいコントローラーの必要なアクションに、よりきめ細かい制御を追加したいと思います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。これらは順番に呼び出す必要があるため、注文は許可されます。

ただし、どうやらこれは機能しません。助言がありますか??些細なことを見逃してしまう気持ち…

4

2 に答える 2

0

ただの推測。Cacheのオブジェクトを変更した後filterContext、基本フィルタークラスのメソッドを呼び出しますか?

    ...
    base.OnActionExecuting(filterContext);
}

    ...
    base.OnActionExecuted(filterContext);
}
于 2012-06-08T11:57:26.397 に答える
0

フィルターが実行されている順序が期待どおりではない可能性があります。

それらが実行される順序を説明するこのブログ投稿をチェックしてください: http://blog.rajsoftware.com/post/2011/05/14/MVC3-Filter-Ordering.aspx

于 2012-06-22T20:38:48.903 に答える