asp.net编译 - 临时文件命名约定

时间:2017-07-17 16:44:53

标签: c# asp.net asp.net-mvc iis dynamic-compilation

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

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

filename.aspx。#的H​​ashCode#.compiled

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

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

1 个答案:

答案 0 :(得分:0)

我注意到命名约定是在运行时从Build Manager(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