设为首页 收藏本站
查看: 689|回复: 0

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

[复制链接]

尚未签到

发表于 2015-6-29 19:19:00 | 显示全部楼层 |阅读模式
  会话状态是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配置SQL Server。
DSC0000.jpg 选择“下一步”
DSC0001.jpg 选择按图中所示进行选择,然后“下一步”
DSC0002.jpg

填入与ASP.NET关联的数据库服务器信息,注意这里选择的数据库,在往后的ASP.NET应用程序中是可以改变的。填入完成之后选择“下一步”
之后还有两个界面,不过在那两个界面中只需要“下一步”,没有可选择的信息,所以这里不列出来了。

2)配置会话状态使用的数据库库。
正如刚才所说,使用数据库保存会话也分三种方式,临时数据库(SQL Server重启后会丢失数据)、ASPState数据库和自定义数据库。

注意 -ssadd, -E, -sstype 指令。
    -ssadd 指令的功能是添加会话数据库,默认是添加到临时数据库
    -E 指令的功能是使用WINDOWS身份验证,因为我演示的SQL Server在本机上,所以使用该指令才能连接,单独的 -ssadd是运行不了的。
    -sstype 指令的功能是指定会话状态使用哪个数据库。随后的参数有 t、p'和c ,分别为临时数据库,ASPState数据库库和自定义数据库。
    -d 的功能是在指定自定义数据库的时候,指定该数据库的名称,以数据库名称做参数。

使用临时数据库保存会话状态的指令
DSC0003.jpg
DSC0004.jpg 临时数据库中多了两个用于保存会话状态信息的表。

使用ASPState数据库保存会话状态的指令
DSC0005.jpg
DSC0006.jpg 执行之后,在数据库中出现了新的数据库ASPState。其中带有的表跟之前在临时数据库中的一致。

使用自定义数据库TestCustom数据库保存会话状态的指令
DSC0007.jpg
DSC0008.jpg

除了拥有上述的表之外,还带有一系列自动添加上去的存储过程,其实这些存储过程不是自定义数据库才特有的。无论使用哪种数据库,都会有这些存储过程,只是当从一种数据库改到另一种数据库的时候,表会留下来,但存储过程就会全部转移到新使用的数据库中。

想要取消使用以上的设置,只需要-ssremove -E指令。
DSC0009.jpg

以上这些只能在本机的数据库中创建会话数据库,但正规的操作是不应该在数据库服务器上直接进行这些操作,很可能该服务器上根本没有ASP.NET的组件。
因此我们需要从ASP.NET程序的部署服务器,通过远程连接来进行配置,以下将演示这一实例,通过我的计算机连接到团队成员的远程计算机上。

要先说明,在CMD中运行aspnet_regsql.exe,要进行远程连接,需要使用-S -U -P指令,分别指定:数据库服务器名称/地址、连接使用的帐号和密码。
同时必须注明,要在SQL Server中配置会话数据库,必须具有创建表格,创建数据库,创建存储过程,和MSDB的RSExecRole角色权限。否则配置过程一定会出错。
DSC00010.jpg

以上配置指令在 119.120.74.150的机器上,使用帐号密码均为silin建立连接,然后创建一个自定义数据库TestCustom来保存会话状态。

以上就是关于ASP.NET使用SQL Server的配置。接下来是配置文件的修改。

修改ASP.NET程序的配置文件

在ASP.NET的配置文件中找到区段,很可能没有这个区段,因为存在默认设置,这里假设没有这个区段,重新写入。

只需要这么简单的设置。当然还有其他设置,但要起到作用,最少只需要这两个属性设置就OK了。

完成上述设置之后,在程序中的存取的会话数据就会自动保存到数据库中,整个编码过程没有任何改动。ASP.NET的这个提供程序机制,的确把代码实现跟数据保存方式分离了。不过要注意,当把会话状态保存到ASP.NET运行进程以外的介质时,必定会进行序列化和反序列化,因此必须注意会话状态中保存的类型是否能够进行序列化。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81724-1-1.html 上篇帖子: 用sp_change_users_login消除Sql Server的孤立用户 下篇帖子: 黄聪:SQL Server 2008支持将数据导出为脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表