zoukankan      html  css  js  c++  java
  • ASP.NET MVC:会导致锁定的会话

    ASP.NET MVC:会导致锁定的会话

    背景

    一直没有意识到会话的访问会导致会话锁定,现在想想这样设计是非常合理的,不过某些情况下这样会导致同一个会话的并发访问非常低(只能串行化),好在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

     
    分类: ASP.NET MVC
  • 相关阅读:
    axios解决调用后端接口跨域问题
    vuex的使用入门-官方用例
    vue使用axios实现前后端通信
    vue组件间通信用例
    vue-router的访问权限管理
    vue-router使用入门
    PHP 流程控制
    PHP 表达式和运算符
    PHP 预定义变量
    PHP 常量
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3256633.html
Copyright © 2011-2022 走看看