【问题标题】:What is life cycle of SQL session state?SQL会话状态的生命周期是什么?
【发布时间】:2015-07-29 13:28:17
【问题描述】:

我搜索了 SQL 会话状态生命周期及其工作原理,但没有找到任何解释它的网站。 我发现的只是如何配置它。

我尝试了什么:我用两台服务器创建了网络农场并在上面应用了 SQL 会话,但我不知道 SQL 会话是如何工作的? 用户的每个请求是否都需要从数据库中读取他的会话 ID?
.Net 事件如何处理 SQL 会话? SQL 会话是否临时保存在内存中?

【问题讨论】:

  • 您是如何使用“两个”服务器创建网络表单的?应用的 sql 会话是什么意思?请代码
  • 这是网络农场而不是网络表单,我的意思是 iis 中的 sql 会话状态模式。

标签: sql-server asp.net-mvc iis web-farm


【解决方案1】:

我搜索了关于 SQL session ,

SQL 会话是并发的,这里是关于 SQL 会话如何工作的解释: https://msdn.microsoft.com/en-us/library/aa478952.aspx

为了测试并发性,我让 MVC 应用程序使用 SQL 会话,应用程序包含两个控制器:Home、Account。 我应用了两个试验来测试并发性:

试验一:两个控制器访问 SQL 会话。

• 使 Home 控制器包含写入 SQL 会话的操作,然后休眠 30 秒,如下所示:

• 使帐户控制器包含从 SQL 会话读取的操作,如下所示:

• 启动应用程序并打开两个选项卡:第一个选项卡用于主页,第二个选项卡用于帐户。当我打开第二个标签时,它打开了!并且不等待第一个选项卡结束他的请求,并且 ViewBag.Name 具有空值;这是因为直到现在还没有 SQL 会话保存在 DB 上。

• 在主控网络请求结束后,保存在 DB 上的会话状态,然后我刷新 tab1 然后刷新 tab2 并注意到选项卡 2 正在等待选项卡 1 结束他的网络请求。

试验 2:一个控制器访问会话。

• 在试用 1 中使用家庭控制器代码。

• 修改帐户控制器并从会话中删除读取代码,如下所示:

• 我打开两个选项卡:选项卡 1 用于主页,选项卡 2 用于帐户; tab 2 等待 tab 1 结束他的 web 请求。

• 为了使选项卡 2 不等待选项卡 1,我将帐户控制器会话状态设为禁用,如下所示:


对于读写 SQL 会话,ASP.NET 工作进程在每个 Web 请求结束时将属于客户端会话集合的对象存储在 SQL Server 中。

我使用 SQL 分析器工具在 SQL 会话上读取/写入时进行跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 2011-08-21
    • 2016-11-21
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多