Сжатие HTTP с ASP.NET 4.0 и IIS7 - PullRequest
       32

Сжатие HTTP с ASP.NET 4.0 и IIS7

3 голосов
/ 13 февраля 2011

Я уже некоторое время пытаюсь реализовать HTTP-сжатие на нескольких моих сайтах.

Я пытался реализовать HTTP-сжатие, используя варианты следующих двух методов:

Из Application_BeginRequest в Global.asax

Из пользовательского модуля Http

В обоих случаях изначально кажется, что он работает.Но, перемещаясь по сайту, я быстро теряю свой стиль CSS.И браузер сообщает, что файл JS содержит недопустимые символы.И в какой-то момент весь сайт целиком превращается в бред.

Я бы очень хотел знать, что здесь происходит.У кого-нибудь есть предложения?Это потому, что эти методы работают только в более старых версиях ASP.NET/IIS?

РЕДАКТИРОВАТЬ: У меня нет доступа к IIS, и не должны требовать его.С последними версиями ASP.NET и IIS все больше и больше контроля предоставляется web.config, не затрагивая IIS.Это должно быть полностью поддержано, не углубляясь в IIS, и, фактически, две ссылки выше утверждают, что они могут сделать именно это.Я просто не могу заставить его работать на меня.

РЕДАКТИРОВАТЬ: При дальнейшей проверке, используя код во второй ссылке выше (модуль HTTP), я вижу обработчик модулявызывается для всех типов файлов на моем сайте.Это явно часть проблемы.(Обратите внимание, что в некоторых случаях вся страница превращается в мусор, что предполагает другие проблемы.) Может кто-нибудь подсказать, что определяет, какие файлы отправляются обработчику HTTP, или почему код по этой ссылке может работать для кого-то другого, но не для меня.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2011

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

1 голос
/ 15 февраля 2011

Несмотря на то, что здесь у меня могло быть несколько проблем, следующая цитата из Пошаговое руководство. Создание и регистрация пользовательского модуля HTTP , кажется, освещает проблему:

Если приложение ASP.NET работает под управлением IIS 6.0, вы можете использовать HTTP-модули для настройки запросов на ресурсы, обслуживаемые ASP.NET.Это включает в себя веб-страницы ASP.NET (файлы .aspx), веб-службы (файлы .asmx), обработчики ASP.NET (файлы .ashx) и любые типы файлов, сопоставленные с ASP.NET.Если приложение ASP.NET работает под управлением IIS 7.0, вы можете использовать модули HTTP для настройки запросов на любые ресурсы, обслуживаемые IIS.Это включает в себя не только ресурсы ASP.NET, но и файлы HTML (файлы .htm или .html), графические файлы и т. Д.

Как я начинал подозревать, этоизменить в ASP.NET 4.0 и IIS7.Как я уже упоминал несколько раз, они становятся все более и более интегрированными.И приведенная выше цитата предполагает, что модули HTTP теперь обрабатывают все типы файлов, обслуживаемых IIS.

Так вот почему старый код не работает для меня.И исправление, по-видимому, заключается в простой проверке типа файла из моего обработчика.

...