0

在沉重的压力和负载下,我们使用虚拟路径提供程序的缓存实现存在 ASP.NET 未清除临时文件(编译文件)的问题,即;缓存已更新,但有时 ASP .NET 编译会保存较旧的编译文件,因此永远不会显示更新的内容。

我将临时文件位置移动到另一个目录,并尝试在我的缓存项删除回调委托中手动删除此文件,而不使用 REGEX。目前,这些文件正在编译为

文件名.aspx.#HashCode#.compiled

HashCode 基于文件可用的文件夹,即;如果我在 2 个目录下有相同的文件,我会得到类似的临时文件。具有不同哈希码的文件。我们知道这个 HashCode 是如何根据目录生成的吗?

我试图从虚拟目录、虚拟目录的名称、虚拟路径、已解析的文件系统路径中获取哈希码,但它们都不适用于正在创建的内容。

4

1 回答 1

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

于 2017-07-24T17:23:14.233 回答