ASP.NET(.aspx
)页面顶部有<%@ Page %>
声明,其中包含Inherits=""
属性。 ASPX页面继承自System.Web.UI.Page
declarative-ly。
我的问题是,什么代码实际上将aspx
页面转换为类型System.Web.UI.Page
类的对象?生命周期中的哪个位置发生,哪个类负责它?
答案 0 :(得分:1)
在页面生命周期中实际上并不会发生这种情况。当您的Page对象作为请求的处理程序被调用时,.aspx已经被解析并且代码被编译到底层类中。
此解析和编译发生时取决于应用程序的设置。如果它是“Web站点项目”,则此编译通常由ASP.Net运行时动态发生,这意味着它在检测到之前未被请求或已被修改的页面请求时。
在预编译的网站中,所有类都已存在,并且没有运行时解析和编译。
实际执行转换的类是名为PageParser的类。本质上,ASP.Net运行时调用此类'GetCompiledPageInstance方法,如果页已经不存在于内存中,该方法最终将编译该页。
就生命周期而言 - 页面生命周期嵌套在HttpApplication's "lifecycle"中,而{{3}}又是http请求处理管道的一部分。在页面进入图片之前,这个编译就已经发生了。