[ASP.NET]配置使用SQL Server保存会话状态-阿里云开发者社区

开发者社区> 杰克.陈> 正文

[ASP.NET]配置使用SQL Server保存会话状态

简介: 原文:[ASP.NET]配置使用SQL Server保存会话状态   会话状态是ASP.NET应用程序状态的其中一种,这种状态的特点是以用户为单位,每个会话对应一个用户,也就是说在该用户的整个访问过程,会话状态保存的数据都会持续保存于服务器的介质中,直到会话超时(即用户超过指定时间没有存取会话数据)。
+关注继续查看
原文:[ASP.NET]配置使用SQL Server保存会话状态

  会话状态是ASP.NET应用程序状态的其中一种,这种状态的特点是以用户为单位,每个会话对应一个用户,也就是说在该用户的整个访问过程,会话状态保存的数据都会持续保存于服务器的介质中,直到会话超时(即用户超过指定时间没有存取会话数据)。在服务器端保存会话状态的方式有几种,分别为:

 
1)InProc——这种方式会话状态保存在ASP.NET运行进程内,具体位置就是ASP.NET的Cache(高速缓存)内。
2)StateServer——这种方式会话状态保存在ASP.NET所带有的Wiindows服务进程中,该服务默认是禁用的,需要人手启动。
3)SQL Server——这种方式会话状态保存到SQL Server所管理的数据库中。具体又可以分为保存在临时数据库,ASPState数据库和自定义数据库三种方式。
4)自定义提供程序——这种方式要求开发人员自己开发会话状态的提供程序,会话状态的存取方式完全由该提供程序决定,由此可以保存在其他SQL数据库,或者XML文件,甚至文本文件中都可以。
 
本文目的在于说明怎样配置使用SQL Server来保存会话状态。
整个配置过程分为两部分:
第一部分,在ASP.NET程序运行的服务器上,配置所使用的数据库服务器。
第二部分,在ASP.NET程序的配置文件中修改会话状态的保存方式。
 
配置所使用的数据库服务器
1)运行aspnet_regsql.exe程序,该程序位于目录C:\WINDOWS\Microsoft.NET\Framework\<ASP.NET版本号>下。首先双击运行该程序,为ASP.NET配置SQL Server。
img_5b6786e00a573645c209c5364497e83a.jpg选择“下一步”
img_9fe836396994db1be13de32282b6f9a1.jpg选择按图中所示进行选择,然后“下一步”
img_71b6b7f640b6ba6c8db0d77ae751fa30.jpg
填入与ASP.NET关联的数据库服务器信息,注意这里选择的数据库,在往后的ASP.NET应用程序中是可以改变的。填入完成之后选择“下一步”
之后还有两个界面,不过在那两个界面中只需要“下一步”,没有可选择的信息,所以这里不列出来了。
 
2)配置会话状态使用的数据库库。
正如刚才所说,使用数据库保存会话也分三种方式,临时数据库(SQL Server重启后会丢失数据)、ASPState数据库和自定义数据库。
注意 -ssadd, -E, -sstype 指令。
    -ssadd 指令的功能是添加会话数据库,默认是添加到临时数据库
    -E 指令的功能是使用WINDOWS身份验证,因为我演示的SQL Server在本机上,所以使用该指令才能连接,单独的 -ssadd是运行不了的。
    -sstype 指令的功能是指定会话状态使用哪个数据库。随后的参数有 t、p'和c ,分别为临时数据库,ASPState数据库库和自定义数据库。
    -d 的功能是在指定自定义数据库的时候,指定该数据库的名称,以数据库名称做参数。
 
使用临时数据库保存会话状态的指令
img_629c46e3948d4e3fe8f03ade6cf63a4f.jpg
img_d19e4931c1258b54c15457f5b56c89f1.jpg临时数据库中多了两个用于保存会话状态信息的表。
 
使用ASPState数据库保存会话状态的指令
img_5ec7942b7ff2fc9328eabc5d63464f17.jpg
img_fd2d6169c5d96fed6bc6dd1ab501f4a8.jpg执行之后,在数据库中出现了新的数据库ASPState。其中带有的表跟之前在临时数据库中的一致。
 
使用自定义数据库TestCustom数据库保存会话状态的指令
img_646f36224ff8b73d019d56b8e654d843.jpg
img_fdb288c009cc5a79ab5a4e881c20c495.jpg
除了拥有上述的表之外,还带有一系列自动添加上去的存储过程,其实这些存储过程不是自定义数据库才特有的。无论使用哪种数据库,都会有这些存储过程,只是当从一种数据库改到另一种数据库的时候,表会留下来,但存储过程就会全部转移到新使用的数据库中。
 
想要取消使用以上的设置,只需要-ssremove -E指令。
img_c94f602ea02c43786fa4b465d0224c95.jpg
以上这些只能在本机的数据库中创建会话数据库,但正规的操作是不应该在数据库服务器上直接进行这些操作,很可能该服务器上根本没有ASP.NET的组件。
因此我们需要从ASP.NET程序的部署服务器,通过远程连接来进行配置,以下将演示这一实例,通过我的计算机连接到团队成员的远程计算机上。
 
要先说明,在CMD中运行aspnet_regsql.exe,要进行远程连接,需要使用-S -U -P指令,分别指定:数据库服务器名称/地址、连接使用的帐号和密码。
同时必须注明,要在SQL Server中配置会话数据库,必须具有创建表格,创建数据库,创建存储过程,和MSDB的RSExecRole角色权限。否则配置过程一定会出错。
img_6d4f989783c2185c98bdc43cc428d86b.jpg
以上配置指令在 119.120.74.150的机器上,使用帐号密码均为silin建立连接,然后创建一个自定义数据库TestCustom来保存会话状态。
 
以上就是关于ASP.NET使用SQL Server的配置。接下来是配置文件的修改。
 
修改ASP.NET程序的配置文件
 
在ASP.NET的配置文件中找到<sessionState>区段,很可能没有这个区段,因为存在默认设置,这里假设没有这个区段,重新写入。
 
<sessionState mode="SQLServer" sqlConnectionString="所需连接字符串" /> 只需要这么简单的设置。当然还有其他设置,但要起到作用,最少只需要这两个属性设置就OK了。
 
完成上述设置之后,在程序中的存取的会话数据就会自动保存到数据库中,整个编码过程没有任何改动。ASP.NET的这个提供程序机制,的确把代码实现跟数据保存方式分离了。不过要注意,当把会话状态保存到ASP.NET运行进程以外的介质时,必定会进行序列化和反序列化,因此必须注意会话状态中保存的类型是否能够进行序列化。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spark Streaming + Spark SQL 实现配置化ETL流程
Spark Streaming 非常适合ETL。但是其开发模块化程度不高,所以这里提供了一套方案,该方案提供了新的API用于开发Spark Streaming程序,同时也实现了模块化,配置化,并且支持SQL做数据处理。
6169 0
Asp.Net Core轻松入门之WebHost的配置
在本篇文章中,我来讲一讲如何利用WebHost来加载配置文件和设置启动的Url 在前面的文章中讲过,ASP.Net Core应用程序会自动加载appsettings.json中的配置文件,那么如果配置文件不是写在appsettings.json中的如何来加载呢? 本文介绍利用WebHost从json文件加载和从命令行加载两种方式。
1186 0
asp.net中为什么修改了配置文件后我们不需要重启IIS
本文转载:http://blog.itpub.net/12639172/viewspace-659819/ 大家知道,asp.net中,如果我们修改了配置文件只要把它保存之后,就会立刻反应到程序中, 并不需要我们重启IIS。
611 0
+关注
杰克.陈
一个安静的程序猿~
10427
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载