2012-02-09 67 views
2

我们有一个由第三方开发的应用程序,我不想回到它们来让它们为特定页面添加缓存控件。仅通过Web.config为特定位置添加缓存标头

所有需要禁用高速缓存的页面都位于一个目录中。

问题是,IE似乎没有正确执行Cache-control:nocache,所以我们需要在Pragma中添加:nocache和cache age。

有没有办法使用目录中的configs来做到这一点?它会通过所有的子目录级联吗?可以通过主web.config完成吗?

为了清楚起见,我不想通过代码来实现这一点,它需要通过配置IIS或web.config文件。

我们在IIS 6.0上使用ASP.NET 2.0和4.0。

回答

3

这可以在IIS中使用UI来完成,它实际上是很容易的,或至少它在我的使用情况。

您只需打开IIS管理器,导航到该站点,然后选择要将标题添加到右键单击 - >属性的目录。

点击“标题”标签,并添加您需要的标题。

这递归地向下子目录,并添加标头之前的任何代码添加。

在IIS 7.0/7.5中,可以在每个目录中使用web.config的StaticContent部分。

+0

获得+1.5从我这里找到它:) – Aristos 2012-02-10 17:29:02

+0

它可以做一些特定的URL,我的应用程序是一个MVC3应用程序。 – Krunal 2013-03-09 04:22:08

+0

我不知道有什么办法,但web.config的''部分可能有这种能力?如果我遇到任何问题,我会报告回来 – Martin 2013-03-12 12:52:01

1

你可以做到这一点在Global.asax的

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    HttpApplication app = (HttpApplication)sender; 
    string cTheFile = HttpContext.Current.Request.Path; 

    if (cTheFile.Contains("/ExtraDir/")) 
    { 
     // add your header here 
     app.Response.AppendHeader("Pragma", "no-cache");  
    } 

    //... rest code of... 
} 
+0

感谢您的回复,但我正在寻找一个为什么要通过配置而不是基于代码来实现这一点。我将更新问题 – Martin 2012-02-09 11:11:30

+0

其他头文件可以由IIS元数据库加载,这意味着它可以完成。它也可以通过IIS7.0中的静态内容元素完成。 – Martin 2012-02-09 12:04:58

+0

您可以将其添加到目录中,这就是问题所在。它们都在单个目录中。您可以将标题添加到它看起来像的目录中的所有内容。 – Martin 2012-02-09 12:28:37