2017-08-09 71 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

谢谢,我已将它添加到全球 –

相关问题