第一次请求default.aspx页面时会发生什么?

Mdu*_*hil 3 c# asp.net

第一次请求default.aspx页面时会发生什么?

.net是纯粹的面向对象的框架.

_default是一个扩展Page的类.

无需实例化,无法调用Pre-Init,Init,Load.那么_default类是如何实例化的呢?谁对此负责?

我想知道非常详细的技术步骤?

Pleasa澄清!

Jus*_*tin 5

ASP.Net框架识别该请求是针对该页面default.aspx并检查相应的.aspx文件的标记 - 使用它来生成基于该标记的类.该类的基类在@Page指令中标识:

<%@ Page ... Inherits="WebApplication1._Default" %>
Run Code Online (Sandbox Code Playgroud)

然后它创建该生成类型的实例- 在这种情况下,此类型继承自给定的基类WebApplication1._Default.

ASP.Net框架通常(永远不会)直接创建"代码隐藏"类的实例.

您可以通过调试简单的Web应用程序来自行查看:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // default_asp NOT _Default as you might expect
        string typeName = this.GetType().Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

这解释了为什么事件处理程序只需要标记为受保护而不是公共.

如果您非常热衷于使用this.GetType().Assembly.CodeBase,可以获取生成的程序集的路径 ,请复制该文件并检查生成的类,如IL Spy.