违约时会发生什么.第一次请求Aspx页

本文关键字:第一次 请求 Aspx 什么 | 更新日期: 2023-09-27 18:06:06

默认情况下。第一次请求Aspx页面?

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

_default是一个扩展Page的类。

如果没有实例化,就不能调用Pre-Init、Init、Load。那么_default类是如何实例化的呢?谁对此负责?

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

读澄清!

违约时会发生什么.第一次请求Aspx页

. Net框架确定请求是针对页面default.aspx的,并检查相应.aspx文件的标记——使用该标记生成基于该标记的类。该类的基类在@Page指令中标识:

<%@ Page ... Inherits="WebApplication1._Default" %>

然后创建生成的类型的实例-该类型继承给定的基类,在本例中为WebApplication1._Default

ASP。. Net框架通常不会(永远不会?)直接创建你的"code behind"类的实例。

你可以通过调试一个简单的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;
    }
}

这解释了为什么事件处理程序只需要被标记为protected而不是public。

如果你真的很热衷,你可以使用this.GetType().Assembly.CodeBase获得生成的程序集的路径,复制该文件并检查生成的类,如IL Spy。

我建议你阅读一下ASP。. NET页面生命周期概述

. NET页对象模型

当请求是针对.aspx资源时,处理程序是一个页处理程序,即从Page继承的类的实例。的存储资源类型和处理程序类型之间的关联在应用程序的配置文件

特定页面的HTTP处理程序的类型取决于URL。第一次调用URL时,将创建一个新类动态编译为程序集。类的源代码是检查.aspx源的解析过程的结果。的类被定义为名称空间ASP的一部分,并被赋予一个名为模仿原始URL。例如,如果URL端点为页面。类的名称为ASP.Page_aspx。类名,但是,可以通过设置ClassName以编程方式控制属性。

HTTP处理程序的基类是Page。这个类定义所有页面处理程序共享的最小方法和属性集。的Page类实现IHttpHandler接口。

在几种情况下,实际处理程序的基类不是佩奇,而是另一个阶级。例如,如果使用代码隐藏。代码隐藏是一种开发技术将页面所需的代码隔离到单独的c#或Microsoft中Visual Basic®. net类。一个页面的代码是一组事件类的行为的处理程序和帮助器方法页面。方法内联定义此代码标记或放置在外部类——代码隐藏类中。一个代码隐藏类是从Page继承并专门化的类它有额外的方法。当指定时,将使用代码隐藏类作为HTTP处理程序的基类。