异步请求按理来说应该是会不受其它ajax请求影响的,但如果是服务端访问了Session就不能这么说了。
了解了asp.net的会话管理,那我们来看看今天要谈到的主题:
IReadOnlySessionState,IHttpSessionState,IRequiresSessionState
IHttpSessionState | 定义协定以实现自定义会话状态容器。 | |
IReadOnlySessionState | 指定目标 HTTP 处理程序只需要具有对会话状态值的读访问权限。这是一个标记接口,没有任何方法。 | |
IRequiresSessionState | 指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。 |
对,没错。如果你ashx程序或者服务端程序继承接口IRequiresSessionState这就会造成了服务端sessionState不会被释放的问题。
1.Session 是读和写是有区分的
2.写Session以独占的方式进行
3.当读Session 遇到写Session时,读Session是要被阻塞的。
4.读和读之间是不会被阻塞的 。
所以当你只是读session时候,继承接口改成IReadOnlySessionState即可。这样就不会造成下一个异步的ajax请求被挂起了。
该问题是有服务端会话冲突引起,其实该问题不只是.net会出现的问题,像Java ,PHP这样的服务端语言也会有这样的问题,只是解决方式略有不同。