ASP.NET知识点

1. IsPostBack

IsPostBackPage类的一个属性,一般放在Page_Load事件中。当页面第一次打开时其值为False,若当页面为一个提交后的页面其值为True

2. 编译原理

Ø 动态编译

当用户首次请求资源时,将动态编译ASP.net网页和代码文件。第一次编译页和代码文件后,会缓存编译后的资源,这将大大提高随后对同一页提出请求的效率。动态编译会平均延长用户的初始响应时间。

对动态编译文件的任何更改都会自动使文件的缓存编译程序集无效,并触发虽有受影响的资源的重新编译。

动态编译是按需编译的,ASP.net只会编译和当前Request相关的aspxcode

动态编译是基于某个目录的,也就是说ASP.net会把被请求的page所在的目录的所有需要编译的文件进行编译,并生成一个程序集。

Ø 预编译

由于页和代码文件在第一次被请求时无需编译,因此可以缩短对用户的响应时间。这对于更新频繁的大型网站尤为有用。

可以创建站点的已编译版本,并将该版本部署到成品服务器,而无需使用源代码。

在执行就地预编译时,将编译所有ASP.net文件类型,HTML文件,图形和其他非ASP.NET静态文件将保持原状,预编译过程的逻辑与ASP.NET进行动态编译时所用的逻辑相同,说明了文件之间的依赖关系。

3. Code-Behind

ASP.NET 2.0 Framework中,代码隐藏页面的两个部分是部分类与继承关系的联合,而ASP.net 1.x中,代码隐藏页面的两个部分是一种继承关系。好处:无需在.cs文件中声明控件。

4. AutoEventWireup

指示页的事件是否自动绑定。如果启动了事件自动绑定,则为true,否则为false。默认是true

Asp.net页会引发诸如Init, Load, PreRender等生命周期事件。默认情况下,可以使用Page_事件名称的命名约定将页事件绑定到方法。编译时,ASP.NET将查找基于此命名约定的方法,并自动执行事件与方法之间的绑定。可以对Page类公开的任何事件使用Page_事件名称的约定。

AutoEventWireup属性的缺点是它要求页事件处理程序具有特定的,可预测的名称。这就限制了在命名事件处理程序方面的灵活性。

页事件的显式绑定:

AutoEventWireup属性设置为false时,将不会按命名约定去调用Page_Load方法,这时需要我们显式绑定)

publicpartialclass_Default:System.Web.UI.Page

{
public_Default()
{
this.Load+=newEventHandler(Page_Load);
}
protectedvoidPage_Load(objectsender,EventArgse)
{
}
}

5. ASP.NET页面生命周期

阶段

说明

事件

页请求

页请求发生在页生命周期开始之前。用户请求页时,ASP.net将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。

启动

在启动阶段,将设置页属性,如RequestResponse。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。页还设置UICulture属性。

PreInit

初始化

也初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性。如果需要,还会向页应用于母版页和主页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。

Init

InitComplete

加载

加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。

PreLoad

Load

回发事件处理

如果请求是回发请求,则将调用控件事件处理程序。之后,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。

控件事件

LoadComplete

PreRender

PreRenderComplete

SaveStateComplete

呈现

在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会正对每个控件调用Render方法。

Render方法

卸载

完全呈现页并已将页发送到客户端,准备丢弃该页后,将引发Unload事件。此时,将卸载页属性(如ResponseRequest)并执行清理。

Unload

各个控件的Init事件在页的Init事件之前发生。各个控件的Load事件在页的Load事件之后发生。

6. ASP.net的工作原理

Ø 客户请求Web

Ø IIS接收请求寻找指令文件(.aspx)

Ø ASP.Net代码被发送给CLR进行编译

Ø HTML流的形式返回给浏览器和指令

Ø 浏览器处理HTML并显示页面

7. ASP.net应用程序生命周期

Ø 用户从Web服务器请求应用程序资源

IIS对所请求文件的文件扩展名进行检查,确定由哪个ISAPI扩展处理该请求,然后将该请求传递给合适的ISAPI扩展。

如果文件扩展名尚未映射到ASP.net,则ASP.NET将不会接受该请求。

Ø ASP.net接收对应用程序的第一个请求

ApplicationManager类创建一个应用程序域。在应用程序域中,创建HostingEnvironment类的一个实例,该实例提供对有关应用程序的信息的访问。

如果需要,ASP.net还可对应用程序中的顶级项进行编译,其中包括App_Code文件夹中的应用程序代码。

Ø 为每个请求创建ASP.net核心对象

初始化HttpContextHttpRequestHttpResponse

创建HttpApplication类的实例启动应用程序

创建所有已配置的模块

Ø HttpApplication对象分配给请求

Ø HttpApplication管线处理请求

对请求进行验证,检查浏览器发送的信息,根据所请求资源的文件扩展名选择实现IHttpHandler的类。

你可能感兴趣的:(asp.net)