SessionState的sqlserver模式的配置及使用

2019-07-18 14:43:26 浏览数 (1)

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

SQLServer 模式配置步骤

  1. 在运行将要存储会话状态的 SQL Server 的计算机上运行 InstallSqlState.sql。 默认情况下,InstallSqlState.sql 位于 %SystemRoot%Microsoft.NETFrameworkversion 中。 这将创建一个具有新存储过程的名为 ASPState 的数据库,并在 TempDB 数据库中创建名为 ASPStateTempApplications 和 ASPStateTempSessions 的表。
  2. 在应用程序的 Web.config 文件中,将 mode 设置为 "SQLServer",并将 sqlConnectionString 设置为诸如 "data source=localhost;Integrated Security=SSPI;" 这样的值。

SQLServer 模式配置实操

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

aspnet_regsql.exe -ssadd -sstype c -d <Database Name> -S <SQL Server IP> -U <User Name> -P <Password>

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

2、运行以下命令配置持久性表,aspnet_regsql.exe -ssadd -sstype p -S <SQL Server IP> -U <User Name> -P <Password>

该命令对此应用进行了持久化操作。这时会看到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信息,解决了基本需求。但应对大用户量的访问时,这类频繁访问数据库的方式,性能缺点也是个瓶颈。

扫码关注我们,我们学的不仅是框架,更是梦想!更多技术文章查看 http://letyouknow.net/扫码关注我们,我们学的不仅是框架,更是梦想!更多技术文章查看 http://letyouknow.net/

0 人点赞