2011-01-24 3 views
0

Win7 x64ボックスでInternet Explorer 8、Firefox 3.6、Chrome 8およびIIS 7.5を使用する。ヘッダーがそうであるにもかかわらず、IISがgzipをIEで使用していない場合

私はIHttpHandler(.NET 4)を使用してファイルを提供しています。

フィドラーによると、IE8から私のIISの要求は、それがGZIPを受け入れると言うが、それは返されません。
(loc.portal.comが実際に127.0.0.1であることに注意してください)

 
GET http://loc.portal.com/AdminCenter/FileHandler.ashx?ID=115 HTTP/1.1 
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */* 
Accept-Language: en-US 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; MS-RTC LM 8; InfoPath.3) 
Accept-Encoding: gzip, deflate 
Connection: Keep-Alive 
Host: loc.portal.com 
Cookie: LoginName=; ASP.NET_SessionId=d5qiw5nubkjd2r00gnebg3ar; .ASPXAUTH=BAEA blah blah 

ヘッダーが返さIISからIEへ:

 
HTTP/1.1 200 OK 
Cache-Control: private 
Transfer-Encoding: chunked 
Content-Type: application/msword 
Server: Microsoft-IIS/7.5 
Content-Disposition: attachment; filename="Roll Worksheet.doc" 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Mon, 24 Jan 2011 20:53:34 GMT 

これはgzippedではありません。 Firefoxで

が、しかし、要求は次のようになります。

 
GET http://loc.portal.com/AdminCenter/FileHandler.ashx?ID=115 HTTP/1.1 
Host: loc.portal.com 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Referer: http://loc.portal.com/sb.cn 
Cookie: ASP.NET_SessionId=hw104pctkzrdtciwg4ihriqx; .ASPXAUTH=4FBB blah blah 

応答、正しく、それはGZIPを返すと言う:

 
HTTP/1.1 200 OK 
Cache-Control: private 
Transfer-Encoding: chunked 
Content-Type: application/msword 
Content-Encoding: gzip 
Server: Microsoft-IIS/7.5 
Content-Disposition: attachment; filename="Roll Worksheet.doc" 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Mon, 24 Jan 2011 20:55:07 GMT 

ChromeがFirefoxのようになります。それはgzipを要求し、gzipが返されます。 Fiddlerに表示されるコンテンツのサイズは、実際にはChromeとFirefoxでは本体がIEではなくgzipされていることがわかります。

IISで設定された「動的コンテンツ圧縮を有効にする」(静的コンテンツ圧縮と同様に)があります。私のIHttpHandlerは圧縮に関して特別なことをしておらず、ブラウザごとに異なるコードを実行していません。私は自分のプロジェクトのソースを探しましたが、 "gzip"という言葉はまったく表示されませんでした。私はどうして私がそれを誤って掘り下げてしまうのか分かりません。

IISがgzippedデータをIEに送信しない理由を理解するにはどうすればよいですか?

+0

重要ですか?IEのユーザーはページの読み込みを遅くするために余分な秒が差をつけることはありません。ああ、これはServerFaultに属しています。 :) –

+0

ServerFault ...おそらく。それはASP.NETの問題である可能性があり、したがって開発問題はサーバーの問題ではないようです。 「それは重要ですか?」に関して:おそらくそうではなく、それは私が奇妙な行動を理解していないことを夢中にしていることを正直に言うと、 :-) – mhenry1384

+0

ええ、IEは私を狂ってしまうこともあります...私は唯一の人ではありませんが、私は今日よりも長く知っています。多分私のプロフィールページの伝記が役立つでしょう。 ; D –

答えて

0

IEを使用してリクエストを行うと、そのcontext.Response.Filter == System.Web.HttpResponseStreamFilterSinkが表示されます。 FirefoxまたはChromeを使用してリクエストを行うと、そのコンテキストが表示されます.Response.Filter == RadGZipStreamNet40。 IISの "Failed Request Tracing"ログ*によれば、組み込みのIIS動的圧縮はまったく起動していません。明らかにTelerikは、IEからの呼び出しを圧縮したり、他のブラウザからの呼び出しを行うべきではないと判断しています。

ドキュメントによれば:

RadCompressionを自動的に検出し、これらのコンテンツ応答タイプを期待するリクエストを圧縮する: アプリケーション/ x-www-form-urlencodedで アプリケーション/ JSON アプリケーション/ XML アプリケーション/原子+ xmlの (ソース:http://www.telerik.com/help/aspnet-ajax/radcompression.html

他のブラウザでは、とりわけ、彼らが受け入れる報告され、 "アプリケーション/ xmlの" RadCompress gzipsので、レスポンス。 IEはそれがそれらのもののどれかを受け入れると報告していないので、そうではありません。

関連する問題