我目前正在通过https访问的网站上工作。 我们最近遇到了一个问题,我们无法查看.pdf文件或作为附件发送的任何其他types的文件( Content-Disposition:attachment )。
根据Microsoft知识库,这是由于Cache-Control设置为no-cache 。 但是,我们要求所有页面在每次访问时都要重新加载,所以我们禁用了所有页面的caching(通过我们的ASP代码,而不是通过IIS设置)。
不过,我已经做了一个显示附件的特殊情况,现在它返回一个带有Cache-Control:private的标题,将来的期限设置为1分钟。 这个工作正常,当我在我的本地机器上使用httpstesting它。 但是,当我将其部署到我们的testing服务器并尝试使用时,响应头仍然会返回Cache-Control:no-cache 。
我和服务器之间没有防火墙或任何东西,所以IIS本身必须添加这些标题并replace我的。 我不知道为什么它会这样做,它没有任何意义,但它似乎是目前唯一的select(我还没有find任何其他地方的代码,将改变caching头)。
任何人都可以指向一个可能的地方,IIS可能会设置这些头值?
编辑:事实certificate,IIS 没有搞乱我的caching设置。 相反,我发布的文件夹与IIS提供的文件夹不同。 当我检查path时,我发现了这一点,当我注意到IIS服务的文件太老了。 在正确的文件夹指向IIS修复了我所有的问题。
有几个地方可以控制IIS中的caching。
所有的设置应该保存在web.config中,如果允许在本地保存适当的functionconfiguration(查看Feature Delegation),否则保存在主configuration文件中: RootWeb.config (.NET框架的一部分,例如: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config )和/或ApplicationHost.config ( C:\Windows\System32\inetsrv\config\ApplicationHost.config )。 启动IISpipe理控制台 (IISpipe理器),然后“configuration编辑器”,然后“searchconfiguration”(在侧栏上),您将能够看到IIS已知的所有configuration文件以及search特定的设置。
HTTP响应头 – 最有可能的地方要看:可能有一个自定义头设置明确禁止caching..或通过侧边栏/内容菜单上的“设置通用头…”。
输出caching也可能会影响caching标题(我从来没有使用过这个自己,不能告诉更多)。
URL重写 v2.x也可能用于重写响应头(出站规则)。
PS这个问题将更适合在ServerFault上询问 – 这与“网站pipe理员”相比,是“系统pipe理员”类别问题。
我如何解决我的问题(因为我也编辑了问题,但在这里添加标记为解决)。
事实certificate,IIS并没有搞乱我的caching设置。 相反,我发布的文件夹与IIS提供的文件夹不同。 当我检查path时,我发现了这一点,当我注意到IIS服务的文件太老了。 在正确的文件夹指向IIS修复了我所有的问题。
在我的情况下,事实certificate,caching输出设置中的“扩展名”是“.ext”而不是“ext”,所以我设置的策略没有生效。 有了这个固定的,我也发现我不需要设置caching控制响应头。