3.httphandler和httpmodule各类的做用以及工做原理?

  首先应该知道的是ASP.NET 请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,ASP.NET 把http请求依次传递给管道中各个HttpModule,最终被HttpHandler处理,处理完成后,再次通过管道中的HTTP模块,把结果返回给客户端。咱们能够在每一个HttpModule中均可以干预请求的处理过程。服务器

  httpmodule介绍cookie

  httpmodule主要做用是向httpApplication对象中注册自定义事件,能够是受权验证等等ui

  1.全部httpmodule都是实现了System.Web.IhttpModule接口对象

  2.重写方法主要有两个:接口

    (1)Init 方法:系统初始化的时候自动调用,这个方法容许HTTP模块向HttpApplication 对象中的事件注册本身的事件处理程序。
    (2)Dispose方法: 这个方法给予HTTP模块在对象被垃圾收集以前执行清理的机会。此方法通常无需编写代码。事件

  3.容许注册的事件有如下这些:资源

  1. AcquireRequestState 当ASP.NET运行时准备好接收当前HTTP请求的对话状态的时候引起这个事件。
  2. AuthenticateRequest 当ASP.NET 运行时准备验证用户身份的时候引起这个事件。 
  3. AuthorizeRequest 当ASP.NET运行时准备受权用户访问资源的时候引起这个事件。 
  4. BeginRequest 当ASP.NET运行时接收到新的HTTP请求的时候引起这个事件。 
  5. Disposed 当ASP.NET完成HTTP请求的处理过程时引起这个事件。 
  6. EndRequest 把响应内容发送到客户端以前引起这个事件。 
  7. Error 在处理HTTP请求的过程当中出现未处理异常的时候引起这个事件。 
  8. PostRequestHandlerExecute 在HTTP处理程序结束执行的时候引起这个事件。 
  9. PreRequestHandlerExecute 在ASP.NET开始执行HTTP请求的处理程序以前引起这个事件。在这个事件以后,ASP.NET 把该请求转发给适当的HTTP处理程序。 
  10. PreSendRequestContent 在ASP.NET把响应内容发送到客户端以前引起这个事件。这个事件容许咱们在内容到达客户端以前改变响应内容。咱们可使用这个事件给页面输出添加用于全部页面的内容。例如通用菜单、头信息或脚信息。 
  11. PreSendRequestHeaders 在ASP.NET把HTTP响应头信息发送给客户端以前引起这个事件。在头信息到达客户端以前,这个事件容许咱们改变它的内容。咱们可使用这个事件在头信息中添加cookie和自定义数据。 
  12. ReleaseRequestState 当ASP.NET结束所搜有的请求处理程序执行的时候引起这个事件。 
  13. ResolveRequestCache 咱们引起这个事件来决定是否可使用从输出缓冲返回的内容来结束请求。这依赖于Web应用程序的输出缓冲时怎样设置的。 
  14. UpdateRequestCache 当ASP.NET完成了当前的HTTP请求的处理,而且输出内容已经准备好添加给输出缓冲的时候,引起这个事件。这依赖于Web应用程序的输出缓冲是如何设置的。

  4.自定义的httpmodule要使用必须在Web.Conofig中注册,注册代码以下it

   <httpModules>
           <add name="TestModule" type="命名空间.类名"></add>
         </httpModules> io

  httphandler介绍编译

  httphandler主要做用是HTTP请求的处理中心,真正地对客户端请求的服务器页面作出编译和执行,并将处理事后的信息附加在HTTP请求信息流中再次返回到HttpModule中

  1.全部httphandler都是实现了IHttpHandler接口声明

  2.HttpHandler与HttpModule不一样,一旦定义了本身的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系

  3.必须在Web.Config配置文件中注册,注册代码以下

  <httpHandlers>
       <add verb="*" path="*" type="命名空间.类名"></add>
      </httpHandlers> 

  4.在ProcessRequest方法中实现本身的业务逻辑

相关文章
相关标签/搜索