在IIS7中,我有一个来自第三方的.ashx文件,该文件将缓存头设置为no-cache,private
我想把它缓存在客户端上,所以我在global.asax
中添加了以下代码void Application_EndRequest(object sender, EventArgs e)
{
if (Request.Path.IndexOf("Script.ashx") > -1)
{
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(DateTime.Now.AddDays(7));
Response.Cache.SetValidUntilExpires(true);
Response.Cache.VaryByHeaders["Accept-Language"] = true;
}
}
我希望得到的缓存信息是public, Expires: Thu, 29 Sep 2011 16:06:27 GMT
然而我得到的却是no-cache,public Expires: Thu, 29 Sep 2011 16:06:27 GMT
的弗兰肯反应
所以代码正在用我想要的公共替换私有,但它无法替换无缓存指令。是否有可能用这种方法取代无缓存指令:如果是这样,我错过了什么;如果没有,还有什么其他方法?
上述代码在IIS7经典模式下失败,但在集成模式下,代码按预期工作并产生合理的响应头。我认为这是由于classic的工作方式类似于ISAPI过滤器。我已经切换到集成模式,这已经解决了问题。