文档介绍:: .
.NET (C#) Internals: ASPain),相应地有 HttpRuntime 包括 request、respone、context 对象。图 3、 请求的内部对象模型
、用触发的 MHPM 事件处理请求
一旦创建了 HttpApplication,它开始处理请求,它经历 3 个不同的部分 HttpModule、Page、HttpHandler。
随着它移动到这些部分,将调用不同的事件,开发人员可以扩展和定制同一逻辑。在我们前进之前让我们
了解什么是 HttpModule 和 HttpHandlers。他们帮组我们在 页处理的前后注入自定义逻辑。他
们之间的主要差别是:
(1)如果你想要注入的逻辑是基于像‘.ASPX’、‘.HTML’这样的文件扩展名,使用 HttpHandler。换句话说
HttpHandler 是基于处理器的扩展。(2)如果你想在 管道事件中注入逻辑,使用 HttpModule。换言之是基于处理器的事件。
你可以点这了解他们之间更多的差异。下面是怎样处理请求的逻辑流。有四个重要的步骤 MHPM,解释如
下:
Step 1(M HttpModule):客户端请求处理开始。 引擎开始和创建 HttpModule 发出事件(你
可 以 注 入 定 制 逻 辑 ) 之 前 , 有 6 个 重 要 事 件 你 可 以 使 用 : BeginRequest 、 AuthenticateRequest 、
AuthorizeRequest、ResolveRequestCache、AcquireRequestState 和 PreRequestHandlerExecute。
Step 2(H HttpHandler):一旦上面 6 个事件触发, 引擎将调用 ProcessRequest 事件,即
使你已经在项目中执行了 HttpHandler。
Step 3(P page):一旦 HttpHandler 逻辑执行, page 对象被创建。 page
对象被创建,许多事件被触发,你可以在这些页面事件中写我们自定义的逻辑。有6 个重要事件给我们提
供占位,在 页中写逻辑:Init、Load、Validate、Event、Render、Unload。你可以记住单词 SILVER
来记这些事件,S-Start(没有任何意义,仅仅是为了形成一个单词),I(Init)、L(Load)、V(Validate)、
E(Event)、R(Render)。
Step 4(M HttpModule):一旦页面对象执行了且从内存中卸载,HttpModule 提供发送页面执行事件,
它们可用于注入自定义 post-处理逻辑。有 4 个重要的 post-处理事件,PostRequestHandlerExecute、
PostRequestState、UpdateRequestCache、EndRequest。
下图展示了上面的过程。3、什么事件中应该做什么
下面的表格展示了什么事件中做什么逻辑或代码。
Section Event Description
HttpModule BeginRequest 此事件标志着一个新的请求,他保证在每个请求中都