问:为了可以顺序访问Session的状态值,Session是否提供了锁定机制?
答:Session实现了Reader/Writer的锁机制:
当页面对Session具有可写功能(即页面有<%@Page EnableSessionState="True" %>标记),此时直到请求完成该页面的Session持有一个写锁定。
当页面对Session具有只读功能(即页面有<%@Page EnableSessionState="ReadOnly" %>标记),此时知道请求完成该页面的Session持有一个读锁定。
读锁定将阻塞一个写锁定;读锁定不会阻塞读锁定;写锁定将阻塞所有的读写锁定。这就是为什么两个框架中的同一个页面都去写同一个Session时,其中一个要等待另一个(稍快的那个)完成后,才开始写。

webform:

“写锁定将阻塞所有的读写锁定”,也就是说页面在EnableSessionState="True"的情况下没返回输出时,一直持着Session写操作,其他页面对Session的读操作必须等待,而asp.net的aspx页面默认是EnableSessionState="True",每个页面从请求开始至返回一直持着Session写操作,需验证页面必须读取Session值判断,这就是为什么需验证的页面请求被阻塞的原因。只要耗时页面(A页面)没有Session的写操作,也就不会阻塞其他页面的请求,于是修改A页面的EnableSessionState="ReadOnly",

例如:<%@ Page Language="C#" AutoEventWireup="true"CodeFile="Demo_List.aspx.cs"EnableSessionState="ReadOnly" Inherits="Demo_List" %> ,问题解决。

也就是说,在无需对session进行写操作的页面,加上EnableSessionState="ReadOnly"属性,就不会造成Request阻塞的情况了。

mvc:

为Controller增加以下特性,但是此Controller都不能修改Session了,只能读取。

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

最新文章

  1. (原创)解决.net 下使用uploadify,在火狐浏览器下的error 302
  2. python第三方库学习(2):requests
  3. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR...
  4. 补psp进度(11月4号-9号)
  5. 常用linux命令索引
  6. Android--使用Canvas绘图
  7. JavaScript---闭包和作用域链
  8. PayPal网站付款标准版(for PHP)
  9. 线程调用UpdateData函数出错
  10. java中的nextLine
  11. android- 远程调试
  12. Angular 路由配置
  13. Java 读书笔记 (六) 引用类型
  14. 一脸懵逼学习Java操作Excel之POI(Apache POI)
  15. Codeforces 781D Axel and Marston in Bitland 矩阵 bitset
  16. 测试快速关闭innodb的方法
  17. GetFileOpenName()、GetFilesavename
  18. HUE配置hadoop
  19. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part5
  20. oracle数据同步

热门文章

  1. Mockito-简单使用使用
  2. 使用elasticsearch分页时报max_result_window is too large的错误解决方案
  3. centos7下docker二进制安装
  4. 自建k8s集群日志采集到阿里云日志服务
  5. DES算法原理完整版
  6. cpu使用过高的一次处理方法
  7. Centos-7.x 下子网掩码的配置
  8. Nginx的location匹配规则
  9. Atitit sleep原理 node.js sleep解决方案 timer
  10. TCP 协议简析