asp.net - 在自定义 ASP.NET HttpHandler 响应中禁用缓存控制 header 字段

标签 asp.net .net http caching httphandler

我怎样才能完全抑制由我在 ASP.NET 中的自定义 HttpHandler 返回的 Cache-Control header 的输出?

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

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

最佳答案

您可以使用

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

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

如果上述方法失败(即 protected ),您可以做一个模块来手动挂接到 PreSendRequestHeaders并在此时使用上面的代码删除 header 。

删除标题的大部分问题不是无法删除它,而是在正确的时间删除它。

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

关于asp.net - 在自定义 ASP.NET HttpHandler 响应中禁用缓存控制 header 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727858/

相关文章:

asp.net - VS2012 - 服务器/数据库资源管理器中未显示 "Create table"或 "show table data"菜单选项

asp.net - 添加配置转换未显示,为什么?

c# - 是否有以中等信任度运行的 BinaryFormatter 替代方案

c# - 如何判断一个窗口是模态窗口还是 MDI 窗口?

php - Android 未收到 PHP 服务器的响应

c# - PayPal API Http 调用的问题

asp.net - Web.Config 问题

从网络驱动器启动的 c# .net4 应用程序需要很长时间才能加载

python - 如何设置 Python CGI 服务器?

http - outlook.office.com 与 outlook.office365.com