如何完全抑制由我的自定义httphandler在asp.net中返回的缓存控件头的输出?
我知道,我可以通过修改response.cache和response.cache.setcacheability来更改头字段,但这只会更改头字段,而不会删除它。那不是我想要的。我完全不想对缓存控制字段做任何假设,而将其留给浏览器策略处理。
编辑:httpresponse.charset也是如此。如果未设置字符集,ASP.NET将始终将其设置为“UTF-8”,尽管返回不带字符集参数的标题“content type:text/html”是完全有效的HTML。你知道怎么控制字符集吗?
最佳答案
可以使用
HttpContext.Current.Response.Headers.Remove("HEADER-VALUE-HERE");
如果您使用的是iis7集成管道,但是某些头值受到保护,无法删除(即在最常见的页面生命周期上处理响应后注入)。
如果上述操作失败(即受保护),您可以让模块手动挂接到PreSendRequestHeaders中,并使用上面的代码在此时删除头。
删除报头的大多数问题不是删除报头的不合理,而是在正确的时间删除报头。
我相信使用自定义的http处理程序,您应该能够在处理程序实例化时将其删除。
关于asp.net - 在自定义ASP.NET HttpHandler响应中禁用Cache-Control Header字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8727858/