4

私は、主にテーマを使用するASP.NETサイトの一部を開発していますが、テーマフォルダーにいくつかのCSSファイルがあります。これらは、次のような別の開発者によってweb.configに含まれています。

<Content Include="App_Themes\SoftOrange\CMSStyles.css" />
<Content Include="App_Themes\SoftOrange\ContentStyles.css" />

内部テストサーバー(IIS7、Server 2008 R2 Enterprise)では、2700バイトを超えるファイルに対して、静的および動的圧縮のグローバルIISマネージャーオプションがオンになっています。サイト固有の静的および動的圧縮も有効になります。

ある時点で(おそらくCMSStyles.cssが2700バイトに達したとき)、いくつかのスタイルが詰め込まれました-つまり。ページを見て明らかにロードされていませんでした。content-type(firefox 7.0.1による)がtext / cssを表示していることがわかりました。また、CMSStyles.cssのURLをロードすると、テキストエディターで通常の圧縮されたジャンクのように見えました。

‹�����
など。IEはcssファイルを直接開きませんが、開発者ツールを使用してcssを表示すると、空のように見えます。

このサイトだけで静的コンテンツの圧縮をオフにしたところ、CSSファイルが正しく読み込まれるようになりました。私の質問はなぜですか?!それはコンテンツタイプの問題、コンテンツエンコーディングですか、それともIISの問題ですか、それともWebアプリでのCSSの使用方法の問題ですか?

ありがとう。

編集:

これらは、CMSStyles.cssのGETリクエストのヘッダーです。応答ヘッダー

Accept-Rangesバイト
コンテンツエンコーディングgzip
コンテンツ-長さ1728
コンテンツタイプtext/css
日付2012年4月13日金曜日01:22:43GMT
Etag "80a762a82cecd1:0"
最終更新日、2012年3月30日04:22:03 GMT
永続的-Authtrue
サーバーMicrosoft-IIS/7.5
VaryAccept-エンコーディング
X-Powered-By ASP.NET

リクエストヘッダー

text / css、* / *; q=0.1を受け入れる
Accept-Charset ISO-8859-1、utf-8; q = 0.7、*; q = 0.7
Accept-encoding gzip、deflate
Accept-Language en-gb、en; q = 0.5
接続キープアライブ
クッキー-削除-
ホスト-削除済み-
リファラー-削除済み-
ユーザーエージェントMozilla/5.0(Windows NT 6.1; WOW64; rv:7.0.1)Gecko / 20100101 Firefox / 7.0.1

したがって、コンテンツエンコーディングは正しいように見えます:gzip。

4

1 に答える 1

2

ここでの問題(同様の問題での私の経験から)はContent-Lengthです。

コードのいずれかの部分でを設定したかどうかを確認Content-Lengthし、削除すると、再び機能します。何故ですか ?onヘッダーを設定するContent-Lengthと、IISはそれを圧縮されたものに変更できず、gzipの解凍が失敗するためです。IISが変更に失敗するのはなぜですか?デフォルトでは、IISでヘッダーを設定した場合、このヘッダーは残り、変更できません(特に、早期にフラッシュした場合)。設定後にIISに変更させるフラグがありますが、設定を避けるためだけに使用することをお勧めします。

同様の質問: 負荷分散されたサーバーで、読み込み中にASP.NETサイトがフリーズしたり、ページの上部に奇妙なテキストが表示されたりすることがあります

アップデート

@thinkOfaNumberから:IIS圧縮だけでなくdevexpress圧縮も使用していたことがわかりました。web.configでdevexpress圧縮をオフにしましたが、機能します。

ここに示されているのは、最初の圧縮永久歪みContent-Lengthと2番目の圧縮永久歪みContent-Lengthは、ヘッダーへの書き込みであり、ヘッダーは設定後に変更できないため*変更できないため、2番目の圧縮永久歪みは最終的な圧縮永久歪みを変更し、結果としてブラウザーになります。正しく読み取れず、正しく解凍できません。

[*] IISでヘッダーを送信した後、ブラウザーに送信する前にヘッダーを変更する方法があります。これは、IISのデフォルトの動作を変更することで実行できますが、それほど簡単ではなく、この問題を解決できます。

于 2012-04-13T03:38:20.793 に答える