【问题标题】:ASP.NET Page Request Stage...ASP.NET 页面请求阶段...
【发布时间】:2011-07-29 12:58:34
【问题描述】:

在 Page Request 阶段(Page 生命周期之前),ASP.NET 如何确定 Page 是否需要 1)第一次解析和编译或 2)重新解析和重新编译由于标记更改(假设“允许此预编译站点可更新”= true)或程序集更改?我可以做出一些相当安全的假设,但有人知道 ASP.NET 是如何做出这些决定的吗?

ASP.NET 页面生命周期: http://msdn.microsoft.com/en-us/library/ms178472.aspx

编辑:因此,“第一次”被确定为 ASP.NET 网站的第一个资源请求;太棒了,这不是在请求“第一次”it 时需要解析和编译什么页面或资源(单数)的问题,而是 ASP.NET 第一次解析和编译任何页面或请求资源。 “重新解析和重新编译”以一种“惰性”的方式发生:当动态编译的文件发生更改时,这会使该文件先前编译的缓存版本无效;这会触发重新编译它和所有受影响的资源下一次请求代码 - 根据所做的更改,可能必须重新编译所有文件的 1-n。

感谢@Mass 提供link

【问题讨论】:

标签: asp.net page-lifecycle internals


【解决方案1】:

您可以在下面的链接中找到您需要的所有答案:

在第一次请求时编译

更改时重新编译

编译输出

http://msdn.microsoft.com/en-us/library/ms366723.aspx

【讨论】:

  • 我想我真的在寻找内部结构;换句话说,哈希是否用于根据 asp.net 缓存检查更改的资源以确定更改?是时间戳还是其他标准,还是这些标准的组合?无论如何,我会接受这个答案。谢谢。
【解决方案2】:

关于第二点(“由于标记更改而重新解析和重新编译”):

HTTP 运行时启动了一个文件系统监视器。您可能想探索使用反射器的HttpRuntime.StartMonitoringDirectoryRenamesAndBinDirectory() 方法。

监控受FCNMode 注册表项设置的影响

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET (x86) HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET (x64)

【讨论】:

  • 酷豆,TY多,这些是我要找的细节。
猜你喜欢
  • 2012-01-30
  • 2020-12-07
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多