[英]how to fix err_content_decoding_failed when dynamic compressing?
我正在開發一個ASP.Net網站,目前正在優化它。 我正在嘗試為其啟用動態內容壓縮,但它無法正常工作。
我明白了
錯誤330(net :: ERR_CONTENT_DECODING_FAILED):未知錯誤。
在我的開發環境中,它運行良好。
我有安裝了IIS的AWS EC2服務器windows 2008 R2。
將此添加到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" />
有人知道可能出現什么問題嗎?
提前致謝。
編輯:嘗試通過fiddler運行請求並得到響應:“內容無法解壓縮。
GZip標頭中的幻數不正確。 確保你傳入GZip流。“
我們遇到此問題導致IIS臨時壓縮文件由於磁盤空間不足而損壞/截斷:
inetmgr
我的一位同事有同樣的問題。
他正在使用非標准應用程序池標識運行他的應用程序。 為了解決這個問題,我將稱之為SomeOtherApplicationPoolIdentity
。
問題是它缺少對其緩存目錄中的子文件夾的權限(要查看IIS使用的緩存目錄,請轉到IIS管理器,單擊頂級樹節點,單擊“壓縮”;默認情況下,它是%SystemDrive%\\inetpub\\temp\\IIS Temporary Compressed Files
):
在%SystemDrive%\\inetpub\\temp\\IIS Temporary Compressed Files
,他缺少一個名為SomeOtherApplicationPoolIdentity
的子文件夾的權限,該子文件夾根據其應用程序池標識進行了上下文命名,因此他只是從該子文件夾繼承父文件夾的權限文件夾和它工作,因為父文件夾通常授予IIS_IUSRS
, SYSTEM
, Administrators
和本地管理用戶帳戶的權限。
嘗試指定dynamicCompressionBeforeCache =“false”
我試圖使用dynamicCompressionBeforeCache =“true”因為我認為它會導致我的緩存對象被壓縮保存 - 這樣它們可以作為較小的文件提供,但是得到了同樣的錯誤......
<!--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,則在使用響應填充輸出緩存后仍將發生動態壓縮。
我的想法是檢查應用程序池用戶(如果您有任何特定的)是否擁有目錄“%SystemDrive%\\ inetpub \\ temp \\ IIS臨時壓縮文件”的完全權限
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.