2017-07-17 6 views
0

重い負荷と負荷の下で、仮想パスプロバイダを使用したCacheの実装では、一時ファイル(コンパイルファイル)をクリアしないという問題があります。キャッシュは更新されますが、ASP .NETコンパイルで古いコンパイル済みファイルが保持されることがあり、更新されたコンテンツが表示されないことがあります。asp.netのコンパイル - 一時ファイルの命名規則

一時ファイルの場所を別のディレクトリに移動し、REGEXを使用せずにキャッシュアイテムを削除するキャッシュアイテムでこのファイルを手動で削除しようとしています。現在、ファイルは

filename.aspxとしてコンパイルされている#のハッシュコード番号は、ハッシュコードは、ファイルが利用可能であることすなわちフォルダに基づいて

を.compiled。私は2つのディレクトリの下に同じファイルを持っている場合、私は同様の一時的な温度を得るだろう。異なるハッシュコードを持つファイルこのHashCodeがディレクトリに基づいてどのように生成されているか知っていますか?

仮想ディレクトリの名前から仮想パスから、解決されたファイルシステムパスからハッシュコードを取得しようとしましたが、生成されたもので動作しませんでした。

答えて

0

実行時にビルドマネージャ(GetCacheKeyFromVirtualPathInternal)から命名規則が到着したことに気付きました。

https://github.com/Microsoft/referencesource/blob/4.6.2/System.Web/Compilation/BuildManager.cs

は、私は私のクリーンアップの目的のために同じことを実現することができましたが、GetStringHashCodeメソッドを再実装する必要がありました。(https://github.com/Microsoft/referencesource/blob/master/System.Web/Util/StringUtil.cs