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

标签 asp.net asp.net-mvc

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/

相关文章:

ASP.NET -HTML 表格行默认字体

c# - 在带有 Razor 的 Asp.net MVC 中重新登录时显示最后的 cookie 值(即注销后再次登录)

asp.net - 将脚本管理器引入动态呈现的页面

c# - 未使用异步函数时出现异步错误?

asp.net - WCF SSL 无法为具有权限的 SSL/TLS 建立安全通道

asp.net-mvc - ASP.NET MVC 3 Razor - 将类添加到 EditorFor

asp.net-mvc - ASP.NET MVC Razor额外的空白呈现

.net - 如何将我的 HTTP 处理程序用于选定的路径,并将 MVC 处理程序用于其余路径?

javascript - Ajax 调用仅返回部分数据

c# - ASP.NET C#通过FTPwebRequest上传MemoryStream内容问题