2017-01-17 13 views
1

私はsomething I found here for a previous version of ASP.NETを再現しようとしています。.NET CoreのHttpContext.Response.Cacheに相当しますか?

基本的に、私はすべての回での情報については、サーバへの私のクライアントの見てキャッシュを無効にすることができるようにしたいです。このためにHTMLメタタグを追加しましたが、既にこの情報を持っているクライアントにとっては、バックエンドでキャッシュポリシーを処理することを試したかったのです。

ポストは、アクションフィルタとしてキャッシュポリシーを設定するためにこれをやって言及しています。

public class NoCacheAttribute : ActionFilterAttribute 
{ 
public override void OnResultExecuting(ResultExecutingContext filterContext) 
{ 
    filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
    filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); 
    filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
    filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    filterContext.HttpContext.Response.Cache.SetNoStore(); 

    base.OnResultExecuting(filterContext); 
} 
} 

ただし、HttpContextではASP.NETコアにResponse.Cacheが含まれていないようです。これを行う別の方法がありますか?

ありがとうございます!

答えて

4

あなたは直接所望の値に対応する応答ヘッダーを設定できます。

public class NoCacheAttribute : ActionFilterAttribute 
{ 
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
    { 
     filterContext.HttpContext.Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate"; 
     filterContext.HttpContext.Response.Headers["Expires"] = "-1"; 
     filterContext.HttpContext.Response.Headers["Pragma"] = "no-cache"; 

     base.OnResultExecuting(filterContext); 
    } 
} 
+0

これは多くの意味になります。ありがとうございました! – jackmusick

関連する問題