15

私が持っている ASP.NET MVC4 アプリケーションは、1 年前に最初に公開されて以来、JavaScript と CSS バンドルで正しく動作していると思います。その間、多数の更新を公開してきましたが、スクリプトの配信に問題があったという証拠は見られませんでした。

しかし、最新のコード デプロイでは、提供された JavaScript が最新ではなく、スクリプト バンドルのリクエストで使用されるクエリ文字列パラメーターが、基になるスクリプト コンテンツの変更に関係なく変更されていないことに気付きました。

Visual Studio でソリューションの再構築を試み、変更されたスクリプト ファイルがサーバーに正しく展開されていることを確認しました。また、IIS アプリケーション プールを明示的にリサイクルし、サーバーを再起動しましたが、問題は解決しません。

この問題を診断または修正する方法を教えてください。

更新:ステージング サーバーと運用サーバーを比較したところ、動作の違いに気付きました。どちらのサーバーも、Visual Studio の Web デプロイを使用して同じ方法でデプロイされます。ステージング サーバーは、スクリプト バンドルを参照する URL で使用するハッシュを更新することにより、スクリプト ファイルへの変更を正しく即座に反映します。対照的に、運用サーバーは、スクリプト ファイルの変更やスクリプト バンドルの構成の変更に応じて、バンドル ハッシュを更新できません (IIS を再起動したり、アプリケーション プールをリサイクルした後でも)。これは、問題が運用 IIS 環境に限定されており、コードの変更や Visual Studio の構成とは関係がないことを示しています。

4

2 に答える 2

19

多くの検索の後、私は最終的にこの問題の原因に出くわしました.

サーバーが、新しくデプロイされた JavaScript ファイルへの変更を検出できなかったのは、サーバー上に存在するこれらの JavaScript ファイルのいくつかの類似した名前の縮小バージョンが原因でした。この動作は設計によるものだと思います。つまり、バンドル プロセスでは、既存の縮小されたファイルが優先され、同等の縮小されていないファイルは、それが新しいものであっても無視されます。

これらの少数の縮小されたファイルがどのようにしてサーバー上に存在するようになったのかは正確にはわかりませんが、何らかの代替形式の縮小/バンドルを含む実験の結果であると思います. いずれにせよ、それらを削除するだけで、バンドル メカニズムがデプロイされたスクリプト ファイルを認識し、すべてが機能し始めました。

于 2013-11-15T17:55:54.673 に答える
0

ASP.NET キャッシュの依存関係とディスク上の読み取り専用ファイルに問題がある可能性があると思います。展開環境でファイルが最終的に読み取り専用になるかどうかを確認できますか?

于 2013-11-14T20:04:31.373 に答える