ASPX页面如何变成System.Web.UI.Page?

时间:2010-02-04 20:58:19

标签: asp.net asp.net-mvc

ASP.NET(.aspx)页面顶部有<%@ Page %>声明,其中包含Inherits=""属性。 ASPX页面继承自System.Web.UI.Page declarative-ly。

我的问题是,什么代码实际上将aspx页面转换为类型System.Web.UI.Page类的对象?生命周期中的哪个位置发生,哪个类负责它?

1 个答案:

答案 0 :(得分:1)

在页面生命周期中实际上并不会发生这种情况。当您的Page对象作为请求的处理程序被调用时,.aspx已经被解析并且代码被编译到底层类中。

此解析和编译发生时取决于应用程序的设置。如果它是“Web站点项目”,则此编译通常由ASP.Net运行时动态发生,这意味着它在检测到之前未被请求或已被修改的页面请求时。

在预编译的网站中,所有类都已存在,并且没有运行时解析和编译。

实际执行转换的类是名为PageParser的类。本质上,ASP.Net运行时调用此类'GetCompiledPageInstance方法,如果页已经不存在于内存中,该方法最终将编译该页。

就生命周期而言 - 页面生命周期嵌套在HttpApplication's "lifecycle"中,而{{3}}又是http请求处理管道的一部分。在页面进入图片之前,这个编译就已经发生了。