Отключить поле заголовка Cache-Control в настраиваемом ответе ASP.NET HttpHandler - PullRequest
3 голосов
/ 04 января 2012

Как мне полностью подавить вывод заголовка Cache-Control, который возвращается моим настраиваемым HttpHandler в ASP.NET?

Я знаю, я могу изменить поле заголовка, изменив response.Cache и response.Cache.SetCacheability, но это только изменит поле заголовка, но не удалит его. Это не то, что я хочу. Я совершенно не хочу делать предположений относительно поля Cache-Control и оставляю это на усмотрение политики браузера.

РЕДАКТИРОВАТЬ: То же самое относится и к HttpResponse.Charset. Если никакая кодировка не установлена, ASP.NET всегда будет устанавливать его в «utf-8», хотя возвращение заголовка «Content-Type: text / html» без параметра charset является абсолютно допустимым html. Есть идеи, как подавить кодировку?

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы можете удалить значения заголовков, используя

HttpContext.Current.Response.Headers.Remove("HEADER-VALUE-HERE"); 

Если вы используете интегрированный конвейер IIS7, однако некоторые значения заголовка защищены и не могут быть удалены (т. Е. Они вводятся после того, как ответ обрабатывается на наиболее распространенных жизненных циклах страницы).

Что вы можете сделать, если вышеприведенный сбой (т. Е. Он защищен), - это сделать модуль для ручного подключения к PreSendRequestHeaders и использовать приведенный выше код для удаления заголовка на этом этапе.

Большинство проблем с удалением заголовка заключается не в невозможности удалить его, а в том, чтобы удалить его в нужное время.

Я полагаю, что используя собственный обработчик http, вы сможете удалить его при создании экземпляра обработчика.

0 голосов
/ 06 января 2012

Я только догадываюсь здесь, но я бы подумал, что это настраивается в IIS - в диалоговом окне свойств веб-сайта (или виртуального каталога) есть раздел «Включить срок действия содержимого».Отменяет ли флажок отключение заголовка?

Если у вас нет доступа к диспетчеру IIS, то, боюсь, я не уверен, как вы можете подавить этот заголовок.Глядя на документы, response.Headers - свойство только для чтения, поэтому установка его в пустую строку не сработает ...

...