2016-07-29 2 views
0

Недавно я попытался интегрировать библиотеку минимизации html WebMarkupMin на мой сайт (C#, IIS 8, MVC 4). У нас включено сжатие IIS. Я обнаружил, что IIS фактически сжимает выходной поток фильтра действий, а это значит, что когда я пытаюсь минимизировать свой html в фильтре действия, я пытаюсь минимизировать уже сжатый контент.В какой момент процесса выполнения IIS сжимает выход?

Вопрос: В какой момент времени выполнения IIS сжимает выход? Есть ли способ использовать фильтры действия mvc для изменения html ouptut без отключения IIS-сжатия?

ответ

1

Динамическое сжатие IIS для вывода ASP MVC выполняется довольно поздно в конвейере. В моем тесте это было № 315 из 349 пунктов конвейера, и после того, как все модули asp.net запустились.

Чтобы просмотреть порядок выполненных модулей в конвейере IIS, настройте трассировку запроса Failed Request (FREB) для своего сайта и просмотрите журналы.

Я бы сказал, что в вашем фильтре действий MVC нет способа передать сжатый модуль не сжиматься.

Но вы можете включить сжатие выключено на основе URL-адрес:

В вашем веб-конфигурации использовать что-то вроде этого:

<location path="my/long/route/"> 
    <system.webServer> 
     <urlCompression doDynamicCompression="false" /> 
    </system.webServer> 
</location> 

вы рассказываете IIS, чтобы отключить динамическое сжатие только для этого URL.

0

Необходимо назначить для dynamicCompressionBeforeCache атрибута значение равно false:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    … 
    <system.webServer> 
    … 
    <httpCompression …> 
     … 
    </httpCompression> 
    <urlCompression … dynamicCompressionBeforeCache="false" /> 
    … 
    </system.webServer> 
    … 
</configuration>