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