2010-02-04 32 views
3

ASP.NET(.aspx)页面顶部有一个<%@ Page %>声明,其中包含Inherits=""属性。 ASPX页面继承自System.Web.UI.Page声明式。ASPX页面如何变成System.Web.UI.Page?

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

回答

1

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

当此分析和编译发生取决于您的应用程序的设置。如果它是一个“网站项目”,这个编译通常是由ASP.Net运行时实时发生的,这意味着当它检测到一个请求之前没有被请求或者被修改的页面时。

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

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

在生命周期方面 - 页面生命周期嵌套在HttpApplication's "lifecycle"中,而后者又是http请求处理管道的一部分。在这个编辑发生的时候,页面出现之前就已经过去了。