У меня есть 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
не разрешен в классическом режиме, поэтому я не могу выполнить проверку барьера.
Все идеи с благодарностью приняты.