2017-08-09 3 views
1
Response.Cache.SetCacheability(HttpCacheability.NoCache); // HTTP 1.1. 
Response.Cache.AppendCacheExtension("no-store, must-revalidate"); 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0. 
Response.AppendHeader("Expires", "0"); // Proxies. 

これらのコードは、すべてのマイページレスポンスヘッダーに追加されるように設定しますか。ASP.NET MVCでResponse.AppendHeaderを設定すると、すべてのページに次のヘッダーが追加されます。

ありがとうございます。

+1

カスタムアクションフィルタを作成し、任意のコントローラまたはアクションにこのヘッダーを適用することができます。ベースコントローラーにフィルターを適用し、すべてのコントローラーからこれを継承することができます。 – Jasen

答えて

2

アクションフィルターを作成し、必要なhttpヘッダーを応答に設定できます。 OnActionExecutedを無効にして、これらの新しいヘッダーをレスポンスに追加することができます。

public class MyCustomHeadersFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     filterContext.HttpContext.Response.Headers.Add("Expires","0"); 
     filterContext.HttpContext.Response.Headers.Add("Pragma", "no-cache"); 

     base.OnActionExecuted(filterContext); 
    } 
} 

すべてのリクエストでこれを使用する場合は、グローバルに登録できます。

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new MyCustomHeadersFilter()); 
    } 
} 

一つだけのコントローラのためにそれをしたい場合は、コントローラレベルで適用することができ、あなたが唯一の特定のアクションメソッドのためにそれを必要とする場合、あなたはアクションメソッドレベルでそれを適用することができます。

+0

ありがとう、私はそれをグローバルに追加しました –

関連する問題