ASP.NET的HTTP模块和处理程序之对话状态

作者:控件中国网   出处:互联网   2015-07-17 22:49:18   阅读:3

为了实现扩充或扩展Web服务器的功能,ASP.NET提供了HttpHandler(HTTP处理程序)和HttpModule(HTTP模块),这里,笔者将带各位深入了解这些组件的详细信息。这篇文章,笔者将向大家介绍ASP.NET中HTTP处理程序中的对话状态。


 

AD: Dynamic .NET TWAIN是一款用于.NET桌面应程序下的扫描控件,可以从任何兼容TWAIN的驱动获取图像,市面上少有的分发完全免费的扫描控件,控件中国网:023-6787 0900

 

 

HTTP处理程序中的对话状态


 

维护对话状态是Web应用程序执行的最通常的事务。HTTP处理程序也需要访问这些对话状态。但是HTTP处理程序的默认设置是没有激活对话状态的。为了读取和/或写入状态数据,需要HTTP处理程序实现下面的接口之一:


 

· IRequiresSessionState


 

· IReadOnlySessionState.


 

当HTTP处理程序需要读写对话数据的时候,它必须实现IRequiresSessionState接口。如果它只读取对话数据,实现IReadOnlySessionState接口就可以了。


 

这两个接口都是标记接口,并没有包含任何方法。因此,如果你希望激活NewHandler处理程序的对话状态,要像下面的代码一样声明NewHandler类:

public class NewHandler : IHttpHandler, IRequiresSessionState 


 

HTTP模块


 

HTTP模块是实现了System.Web.IhttpModule接口的.NET组件。这些组件通过在某些事件中注册自身,把自己插入ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。


 

HTTP模块实现了IhttpModule接口的下面一些方法:



这个方法给予HTTP模块在对象被垃圾收集之前执行清理的机会。
 

HTTP模块可以向System.Web.HttpApplication对象暴露的下面一些方法注册:



PreRequestHandlerExecute
在ASP.NET开始执行HTTP请求的处理程序之前引发这个事件。在这个事件之后,ASP.NET 把该请求转发给适当的HTTP处理程序。
PreSendRequestContent
在ASP.NET把响应内容发送到客户端之前引发这个事件。这个事件允许们在内容到达客户端之前改变响应内容。们可以使用这个事件给页面输出添加用于所有页面的内容。例如通用菜单、头信息或脚信息。
PreSendRequestHeaders
在ASP.NET把HTTP响应头信息发送给客户端之前引发这个事件。在头信息到达客户端之前,这个事件允许们改变它的内容。们可以使用这个事件在头信息中添加cookie和自定义数据。
ReleaseRequestState
当ASP.NET结束所搜有的请求处理程序执行的时候引发这个事件。
ResolveRequestCache
们引发这个事件来决定是否可以使用从输出缓冲返回的内容来结束请求。这依赖于Web应用程序的输出缓冲时怎样设置的。
UpdateRequestCache
当ASP.NET完成了当前的HTTP请求的处理,并且输出内容已经准备好添加给输出缓冲的时候,引发这个事件。这依赖于Web应用程序的输出缓冲是如何设置的。
 

除了这些事件之外,们还可以使用四个事件。们可以通过实现Web应用程序的global.asax文件中一些方法来使用这些事件。


 

这些事件是:


 

· Application_OnStart


 

当第一个请求到达Web应用程序的时候引发这个事件。


 

· Application_OnEnd


 

准备终止应用程序之前引发这个事件。


 

· Session_OnStart


 

用户对话的第一个请求引发这个事件。


 

· Session_OnEnd


 

放弃对话或者对话超期的时候引发这个事件。

Dynamic .NET TWAIN是一款用于.NET桌面应程序下的扫描控件,可以从任何兼容TWAIN的驱动获取图像,市面上少有的分发完全免费的扫描控件,控件中国网:023-6787 0900
 

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat