ASP.NET页面请求阶段...

时间:2011-07-29 12:58:35

标签: asp.net page-lifecycle internals

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

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

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

感谢@Mass代表link

2 个答案:

答案 0 :(得分:1)

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

首次申请时编译

在变更时重新编译

编译输出

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

答案 1 :(得分:1)

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

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

监控受

FCNMode注册表项设置的影响

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