2013-02-27 2 views
4

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

я

Ошибка 330 (Net :: ERR_CONTENT_DECODING_FAILED): Неизвестная ошибка.

  • В моей среде разработки работает хорошо.

    • Я построил проект в режиме выпуска я добавил динамический модуль сжатия контента, включено сжатие динамического содержимого и проверить, что это то, что я получаю.
  • У меня есть сервер AWS EC2 Server 2008 R2 с установленным IIS.

    • Я построил проект в режиме выпуска и опубликовал его в папке, которую я развертываю на сервере.
    • Я попытался с той же файл web.config, как я есть на машине разработчика, но не повезло там

Добавлено это web.config:

<httpCompression 
    directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" 
    dynamicCompressionDisableCpuUsage="90" 
    dynamicCompressionEnableCpuUsage="80" 
    maxDiskSpaceUsage="100" minFileSizeForComp="2700" 
    noCompressionForRange="true" 
    sendCacheHeaders="false" 
    staticCompressionDisableCpuUsage="100" 
    staticCompressionEnableCpuUsage="80" 
    > 
    <scheme name="gzip" 
     dll="%Windir%\system32\inetsrv\gzip.dll" /> 
    <dynamicTypes> 
     <add mimeType="text/*" enabled="true" /> 
     <add mimeType="message/*" enabled="true" /> 
     <add mimeType="application/javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/xml" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
    </dynamicTypes> 
    <staticTypes> 
     <add mimeType="text/*" enabled="true" /> 
     <add mimeType="message/*" enabled="true" /> 
     <add mimeType="application/javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/atom+xml" enabled="true" /> 
     <add mimeType="application/rss+xml" enabled="true" /> 
     <add mimeType="application/xaml+xml" enabled="true" /> 
     <add mimeType="application/xml" enabled="true" /> 
     <add mimeType="image/svg+xml" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
    </staticTypes> 
</httpCompression> 
<urlCompression doDynamicCompression="true" /> 

Кто угодно есть представление о том, что может быть неправильным?

Заранее спасибо.

EDIT: Пробовал запустить запрос через стельку и получил ответ:.. «Содержание не может быть распакованы

Магическое число в заголовке GZip не правильно Убедитесь, что вы передаете в Поток GZip. "

+0

Вы выяснили, в чем проблема? Я получаю ту же проблему. , , – Will

ответ

0

моя идея заключается в том, чтобы проверить, если пользователь пула приложений (если у вас есть какие-либо конкретные) имеет полные права на папку "% SystemDrive% \ Inetpub \ Temp \ IIS Temporary Compressed Files"

0

попытка указать dynamicCompressionBeforeCache =» ложь»

Я пытался использовать dynamicCompressionBeforeCache =„истина“, потому что я думал, что это вызовет мои кэшированные объекты должны быть сохранены сжаты - так что они могут быть поданы как файлы меньшего размера, но получил ту же ошибку ...

<!--http://www.iis.net/configreference/system.webserver/urlcompression--> 
<urlCompression doStaticCompression="true" doDynamicCompression="true" dynamicCompressionBeforeCache="false" /> 
<httpCompression 
    directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" 
    dynamicCompressionDisableCpuUsage="90" 
    dynamicCompressionEnableCpuUsage="80" 
    maxDiskSpaceUsage="100" 
    minFileSizeForComp="2700" 
    noCompressionForRange="true" 
    sendCacheHeaders="false" 
    staticCompressionDisableCpuUsage="100" 
    staticCompressionEnableCpuUsage="80"> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
    <dynamicTypes> 
     <add mimeType="text/*" enabled="true" /> 
     <add mimeType="message/*" enabled="true" /> 
     <add mimeType="application/javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/xml" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
    </dynamicTypes> 
    <staticTypes> 
     <add mimeType="text/*" enabled="true" /> 
     <add mimeType="message/*" enabled="true" /> 
     <add mimeType="application/javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="application/atom+xml" enabled="true" /> 
     <add mimeType="application/rss+xml" enabled="true" /> 
     <add mimeType="application/xaml+xml" enabled="true" /> 
     <add mimeType="application/xml" enabled="true" /> 
     <add mimeType="image/svg+xml" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
    </staticTypes> 
</httpCompression> 

http://www.iis.net/configreference/system.webserver/urlcompression

Атрибут dynamicCompressionBeforeCache определяет, будет ли IIS будет динамически сжимать содержимое, которое не было в кэше. Когда значение атрибута dynamicCompressionBeforeCache истинно, IIS динамически сжимает ответ при первом запросе и ставит в очередь контент для сжатия.Последующие запросы обслуживаются динамически, пока сжатый ответ не будет добавлен в каталог . Как только сжатый ответ добавляется в каталог кэша, кешированный ответ отправляется клиентам для последующих запросов . Когда dynamicCompressionBeforeCache является ложным, IIS возвращает несжатый ответ до тех пор, пока сжатый ответ не будет добавлен в каталог кеша.

Примечание. Если атрибут dynamicCompressionBeforeCache является истинным, когда сброс ответа на выходный кеш был сброшен, динамическое сжатие не будет выполнено до того, как ответ будет помещен в выходной кэш. Однако, если атрибут doDynamicCompression равен true, динамическое сжатие будет по-прежнему возникать после заполнения кэша вывода с ответом.

6

Мы столкнулись с этой проблемой, вызванной IIS Temporary Compressed Files, которые были коррумпированы/урезан из-за диска выполняется из космоса:

  1. Run inetmgr
  2. Перейти к машине, Compression функция
  3. Удалить содержимое Справочник по кэшу
2

У моего коллеги была эта же проблема.

Он выполнял свое приложение с нестандартным идентификатором пула приложений. Ради этого решения я назову тождество SomeOtherApplicationPoolIdentity.

Проблема заключалась в том, что у него не было прав доступа к подпапке в его кеш-каталоге (чтобы узнать, какой тип кеша IIS используется, перейдите в диспетчер IIS, щелкните узел верхнего уровня дерева, нажмите «Сжатие», по умолчанию это %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files):

enter image description here

Внутри %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files, он пропускал разрешение для вложенной папки с именем, SomeOtherApplicationPoolIdentity, контекстуально им в соответствии с его удостоверением пула приложений, поэтому он просто наследует разрешения от родительской папки из эта подпапка и она работала, потому что родительская папка обычно предоставляет разрешения для IIS_IUSRS, SYSTEM, Administrators и локальной учетной записи пользователя.

+0

Спасибо за это! Пользователь пула APP установлен в LOCAL_SERVICE. Содержимое папки Wiped temp и добавлено LOCAL_SERVICE с полными разрешениями для папки temp, похоже, разрешило это для меня. –

Смежные вопросы