【问题标题】:asp.net compilation - temp file naming conventionasp.net 编译 - 临时文件命名约定
【发布时间】:2017-07-17 16:44:52
【问题描述】:

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

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

文件名.aspx.#HashCode#.compiled

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

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

【问题讨论】:

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


    【解决方案1】:

    我注意到命名约定是在运行时从构建管理器 (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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2010-09-22
      • 2012-02-15
      • 1970-01-01
      • 2012-09-25
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多