在自定义ASP.NET HttpHandler响应中禁用Cache-Control Header字段

时间:2012-01-04 13:41:18

标签: asp.net .net http caching httphandler

如何完全 supress 我的自定义HttpHandler在ASP.NET中返回的Cache-Control Header的输出?

我知道,我可以通过修改response.Cache和response.Cache.SetCacheability来更改标题字段,但这只会更改标题字段,而不是删除它。那不是我想要的。我完全不想对Cache-Control字段做任何假设,而是将其留给浏览器策略。

编辑:HttpResponse.Charset也是如此。如果没有设置charset,ASP.NET将始终将其设置为“utf-8”,尽管返回没有charset参数的标题“Content-Type:text / html”是完全有效的html。知道如何压制字符集吗?

2 个答案:

答案 0 :(得分:1)

您可以使用

删除标题值
HttpContext.Current.Response.Headers.Remove("HEADER-VALUE-HERE"); 

如果您正在使用IIS7集成管道,但是某些标头值受到保护且无法删除(即在最常见的页面生命周期处理响应后注入它们)。

如果上述操作失败(即受保护),您可以执行以下操作:您可以将模块手动挂钩到PreSendRequestHeaders并使用上面的代码删除此时的标题。

删除标题的大多数问题不是删除它的不可能性,而是在正确的时间将其删除。

我相信使用自定义http处理程序,您应该能够在处理程序的实例化中删除它。

答案 1 :(得分:0)

我只是在这里猜测,但我认为这是在IIS中配置的 - 在网站(或虚拟目录)的“属性”对话框中,有一个名为“启用内容过期”的部分。取消勾选此框是否会抑制标题?

如果您无法访问IIS管理器,那么我担心我不确定如何抑制该标头。查看文档,response.Headers是一个只读属性,因此将其设置为空字符串不起作用...