课题ASPNET应用程序与页面生命周期.docx

上传人:b****2 文档编号:2157869 上传时间:2022-10-27 格式:DOCX 页数:19 大小:961.10KB
下载 相关 举报
课题ASPNET应用程序与页面生命周期.docx_第1页
第1页 / 共19页
课题ASPNET应用程序与页面生命周期.docx_第2页
第2页 / 共19页
课题ASPNET应用程序与页面生命周期.docx_第3页
第3页 / 共19页
课题ASPNET应用程序与页面生命周期.docx_第4页
第4页 / 共19页
课题ASPNET应用程序与页面生命周期.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

课题ASPNET应用程序与页面生命周期.docx

《课题ASPNET应用程序与页面生命周期.docx》由会员分享,可在线阅读,更多相关《课题ASPNET应用程序与页面生命周期.docx(19页珍藏版)》请在冰豆网上搜索。

课题ASPNET应用程序与页面生命周期.docx

课题ASPNET应用程序与页面生命周期

ASP.NET应用程序与页面生命周期

在本文中,我们将了解不同的事件,ASP.NET应用程序的生命周期以浏览器向Web服务器(对于ASP.NET应用程序,通常为IIS)发送请求为起点,直至将请求结果返回至浏览器结束。

在这个过程中,首先我们需要了解ASP.NET请求的2个大致的步骤。

其次我们将详细了解'httphandler','httpmodule和页面对象(Page)中不同的事件的执行顺序,逻辑。

二个步骤的过程:

请求处理,2步的过程如下所示,用户发送一个请求到IIS服务器:

1、创建一个运行时,可以处理请求。

换句话说,它创建应用程序对象,请求,响应和上下文对象处理请求。

2、运行时一旦被创建,请求处理,通过一系列的事件处理模块,Handler处理和页面对象。

简称MHPM(Module,handler,pageandModuleevent)。

 

 

ASP.NET应用程序生命周期的各个阶段:

步骤1:

用户从Web服务器请求应用程序资源 ASP.NET应用程序的生命周期以浏览器向Web服务器(对于ASP.NET应用程序,通常为IIS)发送请求为起点。

ASP.NET是Web服务器下的ISAPI扩展。

Web服务器接收到请求时,会对所请求的文件的文件扩展名进行检查,确定应由哪个ISAPI扩展处理该请求,然后将该请求传递给合适的ISAPI扩展。

ASP.NET处理已映射到其上的文件扩展名,如.aspx、.ascx、.ashx和.asmx。

 

步骤2:

ASP.NET接收对应用程序的第一个请求 当ASP.NET接收到对应用程序中任何资源的第一个请求时,名为 ApplicationManager 的类会创建一个应用程序域。

应用程序域为全局变量提供应用程序隔离,并允许单独卸载每个应用程序。

在应用程序域中,将为名为 HostingEnvironment 的类创建一个实例,该实例提供对有关应用程序的信息(如存储该应用程序的文件夹的名称)的访问。

 

 

 

步骤3:

为每个请求创建ASP.NET核心对象 创建了应用程序域并对 HostingEnvironment 对象进行了实例化之后,ASP.NET将创建并初始化核心对象,如HttpContext、HttpRequest 和 HttpResponse。

HttpContext 类包含特定于当前应用程序请求的对象,如 HttpRequest 和 HttpResponse 对象。

HttpRequest 对象包含有关当前请求的信息,包括Cookie和浏览器信息。

HttpResponse 对象包含发送到客户端的响应,包括所有呈现的输出和Cookie。

 

 步骤4:

将 HttpApplication 对象分配给请求初始化所有核心应用程序对象之后,将通过创建 HttpApplication 类的实例启动应用程序。

如果应用程序具有Global.asax文件,则ASP.NET会创建Global.asax类(从 HttpApplication 类派生)的一个实例,并使用该派生类表示应用程序。

 注:

第一次在应用程序中请求ASP.NET页或进程时,将创建 HttpApplication 的一个新实例。

不过,为了尽可能提高性能,可对多个请求重复使用 HttpApplication 实例。

 

步骤5:

 由 HttpApplication 管线处理请求MHPM(Module,handler,pageandModuleevent)。

 

 

 

 

 

 

使用MHPM(Module,handler,pageandModuleevent)事件处理请求 

一旦 HttpApplication对象创建,在处理该请求时将由 HttpApplication 类执行。

我们来了解下HttpModule HttpHandlers。

1、如果你想通过*.aspx,*.html文件来处理程序逻辑,那么你需要使用HttpHandler,换句话说,httphandler是一个扩展的处理器。

2、如果你想使用ASP.NET管道来处理程序逻辑,你需要使用HttpModule换句话说,httpmodule是一个事件处理器。

 

如何处理请求。

mhpm有4个重要的步骤:

步骤1(M:

HttpModule):

客户端开始请求处理。

在引擎和httpmodule中的事件可以用来处理用户自己定义的逻辑。

有6个重要的事件,你可以在你的页面对象被创建之前调用 BeginRequest,authenticaterequest,authorizerequest,resolverequestcache,acquirerequeststate与prerequesthandlerexecute。

 

步骤2(H:

‘HttpHandler’):

一旦上述6个事件被执行完,引擎调用processrequest事件,如果已实现httphandler在您的项目。

 

步骤3(P:

ASP.NETpage):

一旦httphandler执行,页面对象被创建。

而页面对象被创建,Page对象的事件将被调用,这可以帮助我们页面中定制自定义逻辑的处理。

有6个重要的事件,Init, Load, validate, event, render ,unload简称 SILVER   S–Start(doesnotsignifyanythingassuchjustformstheword),I–(Init),L(Load),V(Validate),E(Event)andR(Render)。

步骤4(M:

HttpModule):

一旦页面对象是执行和从内存中卸载,httpmodule提供网页执行事件可以用来注入自定义处理逻辑。

有4个重要的后处理事件postrequesthandlerexecute,releaserequeststate,updaterequestcache与endrequest。

 

 

 事件详细介绍:

 

部分

Event事件

Description描述

HttpModule

BeginRequest

在ASP.NET响应请求时作为HTTP执行管线链中的第一个事件发生。

BeginRequest 事件发出信号表示创建任何给定的新请求。

此事件始终被引发,并且始终是请求处理期间发生的第一个事件。

HttpModule

AuthenticateRequest

当安全模块已建立用户标识时发生。

AuthenticateRequest 事件发出信号表示配置的身份验证机制已对当前请求进行了身份验证。

HttpModule

AuthorizeRequest

安全模块已验证用户授权时发生。

AuthorizeRequest 事件发出信号表示ASP.NET已对当前请求进行了授权。

HttpModule

ResolveRequestCache

在ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务后发生,从而绕过事件处理程序(例如某个页或XMLWebservices)的执行。

HttpModule

AcquireRequestState

当ASP.NET获取与当前请求关联的当前状态(如会话状态)时发生。

AcquireRequestState 事件在创建了事件处理程序之后引发。

HttpModule

PreRequestHandlerExecute

恰好在ASP.NET开始执行事件处理程序(例如,某页或某个XMLWebservices)前发生。

HttpHandler

ProcessRequest

Httphandler逻辑被执行。

 在本节中,我们会写,需要将每页扩展执行的逻辑。

Page

Init

OnInit 方法执行创建 Page 实例所需的初始化和设置步骤。

在页生命周期的此阶段中,页中声明的服务器控件都已初始化为默认状态;但每个控件的视图状态尚未填充。

在 Page_Init 阶段中,页中的控件不能访问该页的其他服务器控件,无论其他控件是子控件还是父控件。

不一定会创建其他服务器控件,也不一定能够访问它们

Page

Load

ASP.NET控件完成加载,你写的UI操作逻辑或任何其他逻辑在这里。

Page

Validate

如果你有你的页面上有验证逻辑,这里检查是否符合验证。

 

Render

将页面最终的输出发送到浏览器,如果你想做出一些最终的HTML的变化,这是输出到浏览器,你可以在这里输入你的HTML的逻辑。

Page

Unload

页面对象从内存中卸载。

HttpModule

PostRequestHandlerExecute

在ASP.NET事件处理程序(例如,某页或某个XMLWebservice)执行完毕时发生。

HttpModule

ReleaserequestState

在ASP.NET执行完所有请求事件处理程序后发生。

该事件将使状态模块保存当前状态数据。

引发ReleaseRequestState 事件以后,应用程序以该请求结束,并发出ASP.NET信号以存储该请求状态。

HttpModule

UpdateRequestCache

Beforeyouend,ifyouwanttoupdateyourcache.结束之前,如果您想更新您的高速缓存。

HttpModule

EndRequest

当ASP.NET执行完事件处理程序以使缓存模块存储将用于从缓存为后续请求提供服务的响应时发生。

 

演示代码:

  在这段代码中,我们创建HttpModule和Httphandler 添加所有请求响应的事件,下面用HttpModuleHttphandler 跟踪所有活动,并把它添加到一个全局性的集合变量中。

 

1publicclassclsHttpModule:

IHttpModule

2{

3privateHttpApplicationhttpApp;

4publicstaticArrayListobjArrayList=newArrayList();

5publicclsHttpModule()

6{

7

8}

9

10

11publicvoidDispose()

12{

13

14}

15

16publicvoidInit(HttpApplicationcontext)

17{

18this.httpApp=context;

19httpApp.Context.Response.Clear();

20objArrayList.Clear();

21objArrayList.Add("httpModule:

Init");

22httpApp.AuthenticateRequest+=newEventHandler(OnAuthentication);

23httpApp.AuthorizeRequest+=newEventHandler(OnAuthorization);

24httpApp.BeginRequest+=newEventHandler(OnBeginrequest);

25httpApp.EndRequest+=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1