SessionState的sqlserver模式的配置及使用

上一文章中有具体描述到SessionState的几种模式的优点与缺点,现在我们挑一个持久性的SQLServer模式来做一个实例,让大家有个细节印象。

SQLServer 模式配置步骤

在运行将要存储会话状态的 SQL Server 的计算机上运行 InstallSqlState.sql。

默认情况下,InstallSqlState.sql 位于 %SystemRoot%\Microsoft.NET\Framework\version 中。

这将创建一个具有新存储过程的名为 ASPState 的数据库,并在 TempDB 数据库中创建名为 ASPStateTempApplications 和 ASPStateTempSessions 的表。

在应用程序的 Web.config 文件中,将 设置为 ,并将 设置为诸如 这样的值。

SQLServer 模式配置实操

1、打开VS命令行,运行以下命令配置状态数据库

aspnet_regsql.exe -ssadd -sstype c -d -S -U -P

此时查看SQLServer会发现增加了数据库ASPState,但是没有表。

2、运行以下命令配置持久性表,aspnet_regsql.exe -ssadd -sstype p -S -U -P

该命令对此应用进行了持久化操作。这时会看到ASPState数据库里面多了两张表,ASPStateTempSession就可以用来保存Session。

同时,Agent中,会增加了一个自动删除过期数据的JOB,每一分钟会执行一次,其实过期的控制就在于这个JOB中。

3、Web.Config增加配置节点

4、我们做一个实际例子来测试一下,需要实例源码的可以留言邮箱地址,现在我们看看例子的截图与原理

Show The Code:

页面请求结果:(先提交,再停止整个站点,再启动站点,最后还原Session),结果 ,你会发现,Session信息仍然有效。

我们检查一下页面的Cookie信息,可以看到,SessionId在客户端存储了起来,与数据表中的SessionId对应起来。

配置参数细节可参考微软官方文档:

https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-2.0/h6bb9cz9(v=vs.80)

到现在为止,我们基本测试完Sql'Server State 的情况,这种方式虽然可以持久性存储并还原Session信息,解决了基本需求。但应对大用户量的访问时,这类频繁访问数据库的方式,性能缺点也是个瓶颈。

接下来,我们会一起讨论一下Redis 和 NCache. 敬请关注我们。

希望您喜欢这篇文章并提供宝贵建议和反馈

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180619G0TVU600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券