2010-08-30 62 views
3

想知道SQL模式下的ASP.NET会话提供程序是否乐观地获取整个会话状态对象(即,当我们请求一个对象时所有的键和它们的值)或以懒惰的方式获取它们(即转到数据库并仅提取请求的密钥和相应的值)?在ASP.NET SQL Server模式下延迟加载会话变量

回答

3

我安装了SQL会话状态SQL这样的:

aspnet_regsql.exe -sstype c -ssadd -d mydatabase -U MyUserName -P MyPassword -S xx.xx.xx.xxx 

下面是被安装了“选择”存储过程中的一个。我试图弄清楚它。

在我看来,用户的整个会话状态被序列化并存储在一个数据库记录中。这将意味着用户的整个会话状态将被加载以访问任何记录。

我猜测它可能是在ASP.net页面或应用程序生命周期的早期阶段默认加载的(也许只有当编译器在页面的任何代码中都能识别对Session()的访问时)。

enter image description here

在此处,会话数据被存储在表,以供参考:

enter image description here