异步请求按理来说应该是会不受其它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这样的服务端语言也会有这样的问题,只是解决方式略有不同。

 posted on 2018-03-30 10:17  黄小黄的黄  阅读(943)  评论(0编辑  收藏  举报