先看这个帖子:
怎样在HttpModule捕获到session?
http://topic.csdn.net/u/20070226/10/9db317e8-0400-4d92-9c93-83a90d6bcde5.html
下面是MSDN上的解释:
IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述
http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.80).aspx
在处理该请求时将由HttpApplication类执行以下事件。希望扩展HttpApplication类的开发人员尤其需要注意这些事件。
-
对请求进行验证,将检查浏览器发送的信息,并确定其是否包含潜在恶意标记。有关更多信息,请参见ValidateRequest和脚本侵入概述。
-
如果已在 Web.config 文件的UrlMappingsSection节中配置了任何 URL,则执行 URL 映射。
-
引发BeginRequest事件。
-
引发AuthenticateRequest事件。
-
引发PostAuthenticateRequest事件。
-
引发AuthorizeRequest事件。
-
引发PostAuthorizeRequest事件。
-
引发ResolveRequestCache事件。
-
引发PostResolveRequestCache事件。
-
根据所请求资源的文件扩展名(在应用程序的配置文件中映射),选择实现IHttpHandler的类,对请求进行处理。如果该请求针对从Page类派生的对象(页),并且需要对该页进行编译,则 ASP.NET 会在创建该页的实例之前对其进行编译。
-
引发PostMapRequestHandler事件。
-
引发AcquireRequestState事件。
-
引发PostAcquireRequestState事件。
-
引发PreRequestHandlerExecute事件。
-
为该请求调用合适的IHttpHandler类的ProcessRequest方法(或异步版BeginProcessRequest)。例如,如果该请求针对某页,则当前的页实例将处理该请求。
-
引发PostRequestHandlerExecute事件。
-
引发ReleaseRequestState事件。
-
引发PostReleaseRequestState事件。
-
如果定义了Filter属性,则执行响应筛选。
-
引发UpdateRequestCache事件。
-
引发PostUpdateRequestCache事件。
-
引发EndRequest事件。
在第10步就选择IHttpHandler,第12步生成HttpSessionState,第15步调用IHttpHandler类的ProcessRequest方法。也就是说在IHttpHandler类的ProcessRequest方法调用的时候HttpSessionState早就准备好了,但为什么得到的确实null呢?原因是没有给我们自己实现的这个IHttpHandler类显示地标明“我们要使用Session”!
解决方法是:
让你写的实现IHttpHandler接口的类再实现一个IRequiresSessionState接口,这个接口嘛,什么都没有,但是确实会让你的实现了IHttpHandler的类能得到一个非null的HttpSessionState!
来看一下IRequiresSessionState接口的描述:
http://msdn.microsoft.com/zh-cn/library/system.web.sessionstate.irequiressessionstate.aspx
指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。
分享到:
相关推荐
在HttpHandler容器中,ASP.NET Framework才调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中...
将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...
代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 ...
【ASP.NET编程知识】asp.net继承IHttpHandler接口实现给网站图片添加水印功能实例.docx
asp.net图片水印效果, 使用IHttpHandler接口实现
asp.net服务端实现文件的上传处理以及下载处理,使用了IHttpHandler接口
HttpHandler实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现通过实现IHttpHandler接口来达到。而HttpModule实现了类似于ISAPI Filter的功能。
第13章 asp.net中的ajax开发 238 13.1 纯javascript开发ajax应用 238 13.2 第三方(ajaxpro)开发 13.2 ajax应用 246 13.3 微软ajax控件库开发ajax应用 254 13.3.1 scriptmanager控件 254 13.3.2 ...
URL Rewriting in ASP.NET1.1 C#
1.无刷新分页控件,以Northwind数据库为示例, 2.支持多种分页样式选择,也可以自己修改源代码自定义 3.可以单击任意字段排序 4.MsSql数据库封装访问类,可以修改代码...5.继承自IHttpHandler接口,实现http请求代理
学习是使用asp.net已经有很长一段时间了,现在就来分析一下mvc的整过过程吧。个人计划写一个mvc系列的博文,仅从源代码的角度来分析mvc。在接触mvc时我们一定会经历路由,那么路由这东东是怎么搞出来的啊。在我们的...
图片防盗链示例,非常简单明了的告诉你该怎么做。
一般处理程序的扩展名为ashx,它实现了IHttpHandler接口,可以响应HTTP请求。我们可以用一般处理程序来动态生成Web图像。
利用HttpHandler创建自定义后缀Rss源 通过IhttpHandler实现图片验证码 使用HttpHandler实现图片防盗链
这是一个简单的上传文件的例子,例子中主要是上传图片格式的文件,只要把检查文件格式的代码删除,就可以上传其他格式的文件了.
该文件是一个asp.net网站,以简单的代码来说明,在asp.net中flash与IHttpHandler接合实现多图片上传。 这个flash只能上传图片。
主要介绍了asp.net继承IHttpHandler接口实现给网站图片添加水印功能,实例分析了asp.net基于IHttpHandler接口实现网站图片水印功能的具体步骤与相关技巧,需要的朋友可以参考下
asp.net实现图片水印 两种方式 class PicHandler : IHttpHandler HandlerPic.ashx
代码如下:<%... public class ChangePwd : IHttpHandler, IReadOnlySessionState { public void ProcessRequest (HttpContext context) { context.Response.ContentType = “text/plain”;