IRequiresSessionState和IReadOnlySessionState应用上的一些差异
2013-12-12 09:39
519 查看
在调用ashx时,如果需要应用Session,则必须继承接口 IRequiresSessionState,IReadOnlySessionState,但根据字面,可以知道 IRequiresSessionState可对Session进行所有操作,IReadOnlySessionState只能对Session进行只读 操作
假设场景:有页面Test.aspx以及一般处理程序Requires.ashx和ReadOnly.ashx(Requires.ashx继承
IRequiresSessionState,ReadOnly.ashx继承IReadOnlySessionState,两者的
ProcessRequest方法内都只有一段代码System.Threading.Thread.Sleep(1000)),Test.aspx分别
有一段js通过ajax异步的方式调用Requires.ashx和ReadOnly.ashx
活动场景1:对Requires.ashx同时进行2次ajax异步访问,通过FireBug监测时间,可以发现第一个Requires.ashx的执行
时间为1秒,第二个Requires.ashx的执行时间为2秒,第二个Requires.ashx的处理时间比第一个多1倍
活动场景2:对ReadOnly.ashx同时进行2次ajax异步访问,通过FireBug监测时间,可以发现第一个ReadOnly.ashx的执行时间为1秒,第二个ReadOnly.ashx的执行时间为1秒,两者处理时间相同
可以得出结论,在继承IRequiresSessionState时,为保证Session的正确性,asp.net内部机制会保证同一次会话期间,在第
一个ashx执行完毕前,不会执行第二个ashx;而继承IReadOnlySessionState时,因为Session是只读不变的,所以
asp.net不需要对Session的正确性进行控制,无论多少个请求,只要IIS能处理,就会同时处理多少个请求
假设场景:有页面Test.aspx以及一般处理程序Requires.ashx和ReadOnly.ashx(Requires.ashx继承
IRequiresSessionState,ReadOnly.ashx继承IReadOnlySessionState,两者的
ProcessRequest方法内都只有一段代码System.Threading.Thread.Sleep(1000)),Test.aspx分别
有一段js通过ajax异步的方式调用Requires.ashx和ReadOnly.ashx
活动场景1:对Requires.ashx同时进行2次ajax异步访问,通过FireBug监测时间,可以发现第一个Requires.ashx的执行
时间为1秒,第二个Requires.ashx的执行时间为2秒,第二个Requires.ashx的处理时间比第一个多1倍
活动场景2:对ReadOnly.ashx同时进行2次ajax异步访问,通过FireBug监测时间,可以发现第一个ReadOnly.ashx的执行时间为1秒,第二个ReadOnly.ashx的执行时间为1秒,两者处理时间相同
可以得出结论,在继承IRequiresSessionState时,为保证Session的正确性,asp.net内部机制会保证同一次会话期间,在第
一个ashx执行完毕前,不会执行第二个ashx;而继承IReadOnlySessionState时,因为Session是只读不变的,所以
asp.net不需要对Session的正确性进行控制,无论多少个请求,只要IIS能处理,就会同时处理多少个请求
相关文章推荐
- IRequiresSessionState和IReadOnlySessionState应用上的一些差异
- 从ASP.NET 会话状态谈IReadOnlySessionState,IHttpSessionState,IRequiresSessionState
- 利用IRequiresSessionState和IReadOnlySessionState接口判断HttpContext是否具有会话读写权限
- 利用HttpHandler实现验证码 及 当你希望从ashx或HttpHandler里访问你的Session时,你必须实现IReadOnlySessionState接口.
- 当你希望从ashx或HttpHandler里访问你的Session时,你必须实现IReadOnlySessionState接口.
- IRequiresSessionState接口控制
- IRequiresSessionState
- IHttpHandler中使用Session实现原理[ASP.NET | IHttpHandler |IRequiresSessionState]
- 会话状态为StateServer时,viewstate保存在Session中的一些问题
- 在一般处理文件中访问Session需要添加IRequiresSessionState(转载)
- 在ashx文件中制作验证码(使用session要继承IRequiresSessionState)
- asp.net IRequiresSessionState
- 在一般处理文件中访问Session需要添加IRequiresSessionState
- ashx文件中要调用Session需要实现接口IRequiresSessionState
- Win32下session和window station以及desktop一些介绍和应用
- asp.net 利用IHttpModule和IRequiresSessionState控制入口登录开发错误解决办法
- 转之农民伯伯 IHttpHandler中使用Session实现原理[ASP.NET | IHttpHandler |IRequiresSessionState]
- 在ashx文件中制作验证码(使用session要继承IRequiresSessionState)
- 通过IRequiresSessionState确认页面是否关闭了Session
- 使用asp.net urlrewrite 出现 Session state can only be used when enableSessionState is set to true 错误