ASP.NET(.aspx
)页面的顶部有一个<%@ Page %>
声明,该声明包含Inherits=""
属性。 ASPX页面以声明方式从System.Web.UI.Page
继承。
我的问题是,什么代码实际上将aspx
页转换为System.Web.UI.Page
类类型的对象?这在生命周期中的何处发生,什么类负责?
最佳答案
它实际上不在页面生命周期内发生。到将Page对象作为请求的处理程序调用时,.aspx已被解析,代码已编译为基础类。
何时进行此分析和编译取决于应用程序的设置。如果是“网站项目”,则此编译通常由ASP.Net运行时动态进行,这意味着当它检测到对以前未请求或已修改的页面的请求时。
在预编译的网站中,所有类都已经存在,并且没有运行时解析和编译发生。
实际执行转换的类是称为PageParser的类。本质上,ASP.Net运行时将调用此类的GetCompiledPageInstance方法,如果该页在内存中尚不存在,则该方法最终将编译该页。
就生命周期而言,页面生命周期嵌套在HttpApplication's "lifecycle"中,后者又是http请求处理管道的一部分。在Page进入图片之前,这种编译就发生了。
关于asp.net - ASPX页面如何变成System.Web.UI.Page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2203169/