Могу ли я определить, было ли сжато содержимое в моем HttpModule?

У меня есть HttpModule, который используется для динамического сжатия содержимого из веб-приложения ASP.NET (MVC3). Подход очень похож на CompressionModule из этой статьи (где модуль применяет фильтр GZip к HttpResponse и устанавливает правильный заголовок Content-encoding).

По одной и другой причине это необходимо работать в классическом режиме, а не в режиме интегрированного конвейера.

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

В результате я получаю двойное сжатие содержимого с кодировкой:

Content-encoding: gzip,gzip

одно из IIS и одно из этой строки в моем коде:

 httpResponse.AppendHeader("Content-encoding", "gzip");

Кто-нибудь знает способ в классическом режиме, который я могу проверить чтобы узнать, сжат ли уже контент, или , если сжатие включено на сервере, чтобы обойти мое собственное сжатие?

В конвейерном режиме эта проверка так же проста, как

if (httpResponse.Headers["Content-encoding"]!= null)
{
   return;
}

, т.е. проверьте, не задано ли уже что-нибудь кодирование содержимого, и если да, ничего не делайте.

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

Все идеи с благодарностью приняты.

6
задан Rob Levine 25 March 2011 в 15:51
поделиться