背景

一直没有意识到会话的访问会导致会话锁定,现在想想这样设计是非常合理的,不过某些情况下这样会导致同一个会话的并发访问非常低(只能串行化),好在MS提供了机制让我们控制这种锁。

测试

A页面:缓存写入页面

1     public partial class Session_Lock_Test : System.Web.UI.Page
2     {
3         protected void Page_Load(object sender, EventArgs e)
4         {
5             this.Session["Data"] = DateTime.Now;
6
7             this.Response.Write(this.Session["Data"]);
8         }
9     }

B页面:缓存读取页面(长时间)

1     public partial class Session_Lock_Read_Long_Test : System.Web.UI.Page
2     {
3         protected void Page_Load(object sender, EventArgs e)
4         {
5             System.Threading.Thread.Sleep(5000);
6
7             this.Response.Write(this.Session["Data"].ToString() + DateTime.Now.Millisecond);
8         }
9     }

C页面:缓存读取页面(短时间)

1     public partial class Session_Lock_Read_Short_Test : System.Web.UI.Page
2     {
3         protected void Page_Load(object sender, EventArgs e)
4         {
5             this.Response.Write(this.Session["Data"].ToString() + DateTime.Now.Millisecond);
6         }
7     }

默认的情况下,如果我们先打开B,再打开C,会发现C始终在B之后显示。

如果修改为并行访问呢?

在WebForm中可以这样修改:

1 <%@ Page Language="C#" AutoEventWireup="true" EnableSessionState="ReadOnly" CodeBehind="Session_Lock_Read_Long_Test.aspx.cs" Inherits="WebFormStudy.Session_Lock_Read_Long_Test" %>

在Mvc中的可以这样修改:

1 [SessionState(SessionStateBehavior.ReadOnly)]

备注

因为IIS Express被我弄坏了,没法贴截图了。

参考资料:http://msdn.microsoft.com/zh-cn/library/ms178587(v=vs.100).aspx。

转载于:https://www.cnblogs.com/happyframework/p/3256403.html

ASP.NET MVC:会导致锁定的会话相关推荐

  1. ASP.NET MVC 1.0 RC 版发布了【转】

    [原文地址]ASP.NET MVC 1.0 Release Candidate Now Available [原文发表日期] Tuesday, January 27, 2009 12:13 PM 今天 ...

  2. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...

    程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...

  3. ASP.NET MVC 使用防伪造令牌来避免CSRF攻击

    本文转自这篇文章 XSRF即在访问B站点的时候,执行了A站点的功能.  比如:  A站点登录后,可以修改用户的邮箱(接口:/Email/Modify?email=123),修改邮箱时只验证用户有没有登 ...

  4. ASP.NET MVC的最佳日志记录库

    目录 介绍 4个日志记录库 log4net Log4net记录文本文件中 Log4net记录到数据库中 NLOG Nlog日志记录在文本文件中 NLog日志记录到数据库中 Serilog Serilo ...

  5. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序处理并发

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第十篇:为ASP.NET MVC应用程序 ...

  6. ASP.NET MVC - 路由

    ASP.NET MVC 路由(Routing) System.Web.Routing命名空间下的有关路由的类型 此命名空间下定义了与路由机制有关的类型,首先从宏观上了解一下这些类型. RouteTab ...

  7. ASP.NET MVC上传文件----uploadify的使用

    课程设计需要实现上传文件模块,本来ASP.NET是有内置的控件,但是ASP.NET MVC没有,所以就有两种方法:自定义和采用第三方插件.由于时间的关系,故采用第三方插件:uploadify. upl ...

  8. 成员资格、授权 – ASP.NET MVC 4 系列

    ASP.NET MVC 不像 ASP.NET WEB FORMS 那样提供了很多自动保护机制来保护页面不受恶意用户的攻击,更明确的说,后者是致力于使应用程序免受攻击: 服务器组件对显示的值和特性进行 ...

  9. 详解Asp.net MVC DropDownLists

    来自网络: Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp. ...

最新文章

  1. C++程序员学Python:C与Python进行交互
  2. Unity钢铁以及玻璃材质的选择
  3. Android开发之购物车加减按钮(附加源码)
  4. 经典Wide Deep模型介绍及tensorflow 2代码实现
  5. 印度版的“大众点评”如何将 Food Feed 业务从 Redis 迁移到 Cassandra
  6. 可以储存照片的字段类型是_sql server 中 哪个字段类型可以储存图象?
  7. 从一个hibernate配置文件中了解到的东西
  8. PaddlePaddle顶会论文复现 | ECO视频动作识别网络
  9. 孤读Paper——《ATSS:Adaptive Training Sample Selection》
  10. Postman调接口时获取Chrome浏览器Cookie数据携带发送
  11. 格式html载入矢量图片,Web前端矢量小图标的使用方法
  12. 【java拾遗】内部类实例化is not an enclosing class
  13. CAP、BASE理论
  14. copyonwritearraylist 深究
  15. C++学习(一五九)Qt的场景图Scene Graph
  16. Elasticsearch之 cerebro 安装配置详细使用
  17. 9x07-usb state拔出usb线后状态仍为CONFIGURED,影响休眠(已解决)
  18. 8月22日到26日工作收获
  19. Java 在Windows上通过代码开启和关闭exe程序
  20. 用Python写简历

热门文章

  1. 深度学习之卷积神经网络(12)深度残差网络
  2. linux挂载fat分区,[实例]用fstab在Linux下自动挂载Win的FAT和NTFS分区
  3. zbrush 添加纹理贴图_zbrush零基础新手必看入门讲解
  4. jsp tag 自定义标签实现按钮的显示
  5. 【Ubuntu-Opencv】Ubuntu14.04 Opencv3.3.0 完整卸载方案
  6. 工业机器人入门实用教程_机器学习实用入门
  7. 深度学习数据集制作工作_创建我的第一个深度学习+数据科学工作站
  8. R语言quantmod包
  9. 蜕变与成长中的青春创作:评论家谈少数民族青年作家的创作
  10. 萨义德与巴伦博依姆关于音乐和文学的对话