こんにちは。
HttpContext.RewritePath
リクエストとホストに応じて、リクエストを内部サイトフォルダーに送信するために使用しています。
問題: IIS によってキャッシュされ GZIP された静的ファイルの RewritePath を要求する要求を行うと、元の圧縮されていないファイル コンテンツとContent-Encoding: gzip
ヘッダーが返され、「コンテンツのデコードに失敗しました」というエラーが発生します。しかし、同じリクエストを完全なディレクトリ パスで行うと (その場合、RewritePath はコードでスキップされます)、gzip された正しいコンテンツがContent-Encoding: gzip
.
例:
エラーの状況:
Request url: localhost/lib/ext_3.4.0/resources/css/ext-all.css
Request path is rewriteed using HttpContext.RewritePath to:localhost/_sites/mainSite/lib/ext_3.4.0/resources/css/ext-all.css
最初の応答は gzip されません - 通常の IIS の動作です。ctrl+F5 を押すと、「コンテンツのデコードに失敗しました」というエラーが表示されます。Fiddler2 を使用すると、応答コンテンツが gzip されておらず、Content-Encoding: gzip
ヘッダーが含まれていることがわかります。
エラーのない状況:
リクエスト url:localhost/_sites/mainSite/lib/ext_3.4.0/resources/css/ext-all.css
リクエスト パスは必要ないため、書き換えられません。
最初の応答は再度 gzip されません。ctrl+F5 を押すと、通常のファイル コンテンツが表示されます。Fiddler2 を使用すると、応答コンテンツが gzip され、サイズが 5 分の 1 になり、Content-Encoding: gzip
ヘッダーが含まれていることがわかります。
RewritePath は捨てられず、IIS gzip が必要です。彼らを友達にする方法はありますか?