2009-08-28 9 views
1

コンテンツタイプヘッダーに基づいてCSS、JS、およびHTMLファイルを消去、圧縮、および縮小するHTTPモジュールがあります。私のステージング環境とローカルホスト(ISS7、古典的なパイプラインモード)でうまく動作します。 IIS 6(プロダクション)では信頼できません。散発的に、この静的ファイルはasp.netによって処理されなくなり、デフォルトのIISハンドラに戻っているように見えます。 web.configに触れるかIISRESETを実行すると、もう一度正しく動作します。モジュールがこの「不快な状態」になっても、.aspxファイルは期待どおりにモジュールで実行されます。だから、私はモジュールが問題ではなく、私たちが見ているのはIISの問題だと確信しています。静的ファイル用のHTTPModuleがIIS 6で実行されない場合があります。

  1. すべての動詞に対してaspnet_isapi.dllによって処理されるように、IIS 6でマップされたHTML、JS、およびCSSファイルがあります。
  2. 私のweb.configでは、ハンドラセクションのSystem.Web.StaticFileHandlerでこれらの静的ファイルを処理するように設定しました。すべての動詞についても同様です。
  3. HTTPモジュールもweb.configに組み込まれています。

私は当分の間、私のプロダクションWebサーバーをIIS 7にアップグレードしないでください!

答えて

0

開発と生産の大きな違いは、トラフィック量です。

ボリュームは、低トラフィック開発テストでヒットしなかった並行性の問題を強調することができます。

あなたは必ずあなたのコードに問題があなたのHttpModuleをであることをスレッドの問題など

+0

ボリュームの問題がありましたら幸いです!残念ながら、私のトラフィックは非常にまばらです。私は間違いなくこれを調査します。 – smercer

1

私はかなり高い自信を持って言うでしょうがないです。たぶん問題はスレッドの問題かもしれません。 HttpModuleはすべての要求に対して一度だけインスタンス化されるため、クラスのメンバー変数にデータを格納すると、同時に複数のスレッドが同じデータにアクセスするため、問題が発生します。

ところで、私はあなたの問題の代替解決策を提案すると思います。ビルドスクリプトを作成します。 MSBuildを実行し、ビルドスクリプトがファイルを圧縮するようにします。

+0

私はビルドプロセスの一環としてこれを行うことを考えましたが、モジュールは実行時に生成されるaxdとasmxのスクリプトプロキシも処理しています。これらの非静的な例の面白いことは、常にうまく動作することです。モジュールによって処理されないことがある静的ファイルだけです。私は定数に変更可能な2つのメンバ変数を持っています(それらは、モジュールのコンストラクタに実装されたStringCollectionです)。私はマルチスレッドのアプリケーションで多くの経験を持っていない、それらが疑わしいかもしれない? – smercer

+0

@smercer - モジュール内の唯一の変数が、コンストラクタ内の2つの変数である場合、それは責任を負うべきではありません。しかし、これらの静的ファイルの1つに多くの要求を同時に発しても、それがマルチスレッドの問題であるかどうかを示すのに役立ちます。しかし、マルチスレッドの問題の最悪の部分は、再作成できないため、まったく持っていないことを決して確信できないということです。 – Pete

関連する問題