温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-12-06 15:31:03 来源:亿速云 阅读:91 作者:iii 栏目:编程语言

这篇文章主要介绍“ASP.NET的HTTP模块和处理程序对话状态是怎样的”,在日常操作中,相信很多人在ASP.NET的HTTP模块和处理程序对话状态是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET的HTTP模块和处理程序对话状态是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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接口的下面一些方法:

方法名称描述
Init这个方法允许HTTP模块向HttpApplication 对象中的事件注册自己的事件处理程序。
Dispose这个方法给予HTTP模块在对象被垃圾收集之前执行清理的机会。

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

事件名称描述
AcquireRequestState当ASP.NET运行时准备好接收当前HTTP请求的对话状态的时候引发这个事件。
AuthenticateRequest当ASP.NET 运行时准备验证用户身份的时候引发这个事件。
AuthorizeRequest当ASP.NET运行时准备授权用户访问资源的时候引发这个事件。
BeginRequest当ASP.NET运行时接收到新的HTTP请求的时候引发这个事件。
Disposed当ASP.NET完成HTTP请求的处理过程时引发这个事件。
EndRequest把响应内容发送到客户端之前引发这个事件。
Error在处理HTTP请求的过程中出现未处理异常的时候引发这个事件。
PostRequestHandlerExecute在HTTP处理程序结束执行的时候引发这个事件。
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

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

到此,关于“ASP.NET的HTTP模块和处理程序对话状态是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI