2013-02-27 90 views
4

我正在ASP.Net网站上工作,目前正在优化它。 我试图启用对它的动态内容压缩,但它不起作用。如何解决动态压缩时err_content_decoding_failed?

我得到

错误330(净值:: ERR_CONTENT_DECODING_FAILED):未知的错误。

  • 在我的开发环境,它工作得很好。

    • 我已经建立了我已经添加了动态内容压缩模块在释放模式 项目,启用动态内容压缩和检查,这是我收到。
  • 我有一台装有IIS的AWS EC2服务器windows 2008 R2。

    • 我已经在发布模式下构建了项目,并将其发布到我部署到服务器的文件夹中。
    • 我已经用相同的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" /> 

任何人有什么可能是错的想法?

在此先感谢。

编辑: 试图运行通过提琴手的请求,并得到了响应:。 “的内容无法解压缩

神奇的数字在gzip头信息是不正确确保您在传递GZip流“。

+0

你弄明白这个问题了吗?我遇到了同样的问题。 。 。 – Will 2014-10-16 18:25:43

回答

0

我的想法是检查应用程序池的用户(如果您有任何具体的)具有完全访问权限的目录“的%SystemDrive%\的Inetpub \ TEMP \ IIS临时压缩文件”

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属性为true时,IIS动态地 在第一次请求时会压缩响应并且队列 用于压缩的内容。随后的请求将动态地服务 ,直到压缩的响应已添加到缓存 目录。一旦将压缩的响应添加到缓存 目录中,缓存的响应将发送给客户端以供后续的 请求使用。当dynamicCompressionBeforeCache为false时,IIS将返回 未压缩的响应,直到已将压缩响应添加到缓存目录的 。

注意:如果在刷新输出缓存响应时dynamicCompressionBeforeCache属性为true,则在将响应放入输出缓存之前执行动态压缩不会执行 。 但是,如果doDynamicCompression属性为true,则在将输出缓存填充到 与响应之后,仍然会发生动态压缩。

6

我们遇到了这个问题引起的IIS临时压缩文件,这是腐败/截断由于运行空间内盘:

  1. 运行inetmgr
  2. 转到机器,压缩功能
  3. 删除缓存目录的内容
2

我的同事有这个完全相同的问题。

他以非标准的应用程序池身份运行他的应用程序。为了这个解决方案,我将称这个身份为SomeOtherApplicationPoolIdentity

问题是,它没有权限访问他的缓存目录中的子文件夹(要查看IIS使用的缓存目录,请转到IIS管理器,单击顶级树节点,单击压缩;默认情况下它是%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files):

enter image description here

里面的%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files,他失踪了命名,SomeOtherApplicationPoolIdentity子文件夹,根据他的应用程序池标识上下文命名的权限,所以他只是继承权限从父文件夹从该子文件夹和它的工作,因为父文件夹通常授予对的权限,SYSTEM,Administrators和本地管理用户帐户。

+0

感谢您的支持! APP池用户设置为LOCAL_SERVICE。删除临时文件夹的内容,并添加LOCAL_SERVICE与临时文件夹的完全权限似乎为我解决它。 – 2016-12-29 15:06:51