我搜索了SQL会话状态生命周期以及它是如何工作的,但我没有找到任何网站解释它。 我找到的只是如何配置它。
我尝试过:我创建了两个服务器的Web场并在其上应用SQL会话,但我不知道SQL会话是如何工作的?
来自用户的每个请求都需要从db读取他的会话ID吗?
.Net事件如何处理SQL会话?
SQL会话是暂时保存在内存中吗?
答案 0 :(得分:1)
我搜索了SQL会话,
SQL会话是并发的,这里是关于SQL会话如何工作的说明: https://msdn.microsoft.com/en-us/library/aa478952.aspx
为了测试并发性,我使MVC应用程序使用SQL会话,该应用程序包含两个控制器:Home,Account。 我应用了两个试验来测试并发性:
试用版1:两个控制器访问SQL会话。
•Made Home控制器包含写入SQL会话的操作,然后睡眠30秒,如下所示:
•Made Account控制器包含从SQL会话中读取的操作,如下所示:
•启动应用程序并打开两个选项卡:主页的第一个选项卡和帐户的第二个选项卡。当我打开第二个标签时,它打开了!而不是等待第一个标签结束他的请求,并且ViewBag.Name具有空值;发生这种情况是因为直到现在还没有在DB上保存SQL会话。
•在家庭控制Web请求结束后保存在DB上的会话状态,然后我刷新tab1然后tab2并注意标签2等待标签1结束他的Web请求。
试用版2:一个控制器访问会话。
•在试用版1上使用Home Controller代码。
•修改帐户控制器并从会话中删除读取的代码,如下所示:
•我打开两个标签:标签1用于主页,标签2用于帐户;选项卡2等待标签1结束他的网络请求。
•要使标签2不等标签1,我将帐户控制器会话状态禁用,如下所示:
对于读写SQL会话,ASP.NET辅助进程在每个Web请求结束时将属于客户机会话集合的对象存储在SQL Server中。
我使用SQL profiler工具跟踪SQL会话的读/写时间。