Iis-7
為什麼 IIS 7 忽略某些(但不是全部)MIME 類型進行壓縮?給出錯誤:DYNAMIC_COMPRESSION_NOT_SUCCESS - 原因 12
所以,我有點像 IIS7 n00b,但我已經使用了大多數可以追溯到 3 的舊 IIS 系統。我正在嘗試打開動態壓縮並且它大部分都在工作。它不適用於我的 ADO.Net 數據服務 (Astoria) 請求,無論是否批處理。
我發現失敗的請求 (FREB) 跟踪真的很有幫助。我在未批處理的請求中看到的是
Reason Code 12, NO_MATCHING_CONTENT_TYPE
. 好的,所以我沒有指定匹配的 MIME 類型,這很容易。除了這是我的 web.config 中的內容(我認為這是正確的,但也許不是)。
<httpCompression dynamicCompressionDisableCpuUsage="100" dynamicCompressionEnableCpuUsage="100" noCompressionForHttp10="false" noCompressionForProxies="false" noCompressionForRange="false" sendCacheHeaders="true" staticCompressionDisableCpuUsage="100" staticCompressionEnableCpuUsage="100"> <dynamicTypes> <clear/> <add mimeType="*/*" enabled="true" /> </dynamicTypes> <staticTypes> <clear/> <add mimeType="*/*" enabled="true" /> </staticTypes> </httpCompression> <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" />
現在我認為這意味著它應該壓縮任何包含 Accept:Gzip 標頭的請求。我很想知道其他人在這裡會怎麼想。
我的提琴手踪跡:
GET /SecurityDataService.svc/GetCurrentAccount HTTP/1.1 Accept-Charset: UTF-8 Accept-Language: en-us dataserviceversion: 1.0;Silverlight Accept: application/atom+xml,application/xml maxdataserviceversion: 1.0;Silverlight Referer: http://sdev03/apptestpage.aspx Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3) Host: sdev03 Connection: Keep-Alive Cookie: .ASPXAUTH=<snip> HTTP/1.1 200 OK Cache-Control: no-cache Content-Type: application/atom+xml;charset=utf-8 Server: Microsoft-IIS/7.0 DataServiceVersion: 1.0; X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET Date: Mon, 22 Mar 2010 22:29:06 GMT Content-Length: 2726 <?xml version="1.0" encoding="utf-8" standalone="yes"?> *** <snip> removed ***
好的,事實證明你不能在 web.config 中配置它,只能在 appHost.config 中配置。我以為文件確實說過 appHost.config 但我以為它是一般概念的規範,而不是唯一允許的配置位置。
彼得,感謝您的提示——我們還發現設置
<add mimeType="application/atom+xml; charset=utf-8" enabled="true" />
在修復這個
<httpCompression>
部分。applicationHost.config
由於壓縮程式碼中的錯誤,我們還必須指定編碼:
壓縮程式碼中存在一個錯誤,它無法正確解析響應標頭中的字元集,因此您必須在動態壓縮設置中配置“application/xml; charset=utf-8”才能使其正常工作。
這是完整的相關部分
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" /> <scheme name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/atom+xml; charset=utf-8" 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="*/*" enabled="false" /> </staticTypes> </httpCompression>